PERCOBAAN II
I. Tujuan
Sesudah praktikum diharapkan mahasiswa mampu:
1. Membuat PWM mode ctc
2. Membuat PWM mode fast
3. Membuat PWM mode phase correct
4. Memahami modul hardware timer
5. Memahami pengaturan interrupt timer
6. Membuat PWM sesuai kebutuhan
Program 1.
#include <mega32.h>
void main(void)
{
DDRD=(0<<DDD7) | (0<<DDD6) | (1<<DDD5) | (1<<DDD4) | (0<<DDD3)
|(0<<DDD2) | (0<<DDD1) | (0<<DDD0)
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4)
(0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0)
OCR3A =0x0080
OCR1B =0x0080
while (1);
MODUL II PWM MODE CTC, FAST DAN PHASE CORRECT
𝑓𝑐𝑙𝑘
𝑓𝑂𝐶𝑛 =
2. 𝑁. (𝑇𝑂𝑃)
Dimana : 𝑓𝑐𝑙𝑘 adalah frekuensi input clock
N adalah factor pembagi clock
TOP adalah hitungan maximum 8 bit
6. Ubah nilai output compare register dengan nilai yang berbeda dan ulang langkah
no.3 s/d 5, Jelaskan jika terjadi atau tidak terjadi perbedaan
7. Ubah nilai factor pembagi clock dengan nilai yang berbeda dan ulang langkah
no.3 s/d 5, Jelaskan jika terjadi atau tidak terjadi perbedaan
8. Ulangi langkah 1 s/d 3 untuk program 2.
Program 2.
/*
* pwm ctc
*
* Created: 26/03/2021 11:46:50
* Author: dell */
MODUL II PWM MODE CTC, FAST DAN PHASE CORRECT
1. #include <mega32.h>
2.
3. void main(void)
4. {
5. //set direction port D4 dan D5 sebagai output yang lain input
6. ….
7. //set port D dengan nilai inisial 0x00
8. ….
9. // set timer1 sbb
10. // COM1A1:0=1
11. // COM1B1:0=1
12. //WGM13:0=4
13. //CS12:0=1
14. …
15. …
16. //set register output compare register1A dengan nilai 80(h)
17. //set register output compare register1B dengan nilai 80(h)
18. …
19. …
20. //set register timer1 mask sbb
21. // output compare interrupt enable 1B =1
22. // output compare interrupt enable 1A =1
23. …
24. // interrupt global =1
25. …
26. while (1);
27. }
28. interrupt [TIM1_COMPA] void
layanan_interupt_compare_matchA(void){
29. TCNT1=0;
30. }
31.
32. interrupt [TIM1_COMPB] void
layanan_interupt_compare_matchB(void){
33. TCNT1=0;
9. Ulangi langkah 4
10. Hitung frekuensi output dengan rumus .
𝑓𝑐𝑙𝑘
𝑓𝑂𝐶𝑛 =
2. 𝑁. (1 + 𝑂𝐶𝑅𝑛)
Dimana : 𝑓𝑐𝑙𝑘 adalah frekuensi input clock
N adalah factor pembagi clock
OCRn adalah nilai output compare register
MODUL II PWM MODE CTC, FAST DAN PHASE CORRECT
1. #include <mega32.h>
2.
3. void main(void)
4. {
5. //set direction port D4 dan D5 sebagai output yang lain input
6. ….
7. //set port D dengan nilai inisial 0x00
8. ….
9. // set timer1 sbb
10. // COM1A1:0=2
11. // COM1B1:0=2
12. //WGM13:0=6
13. //CS12:0=1
14. …
15. …
16. while (1);
𝑓𝑐𝑙𝑘
𝑓𝑂𝐶𝑛 =
𝑁. (1 + 𝑇𝑂𝑃)
Program 4.
/*
* pwm phase correct
*
* Created: 26/03/2021 11:46:50
* Author: dell */
1. #include <mega32.h>
2.
3. void main(void)
4. {
5. //set direction port D4 dan D5 sebagai output yang lain input
6. ….
7. //set port D dengan nilai inisial 0x00
8. ….
9. // set timer1 sbb
10. // COM1A1:0=2
11. // COM1B1:0=2
12. //WGM13:0=3
13. //CS12:0=1
14. …
15. …
16. while (1);
17. }
𝑓𝑐𝑙𝑘
𝑓𝑂𝐶𝑛 =
2 𝑁. (𝑇𝑂𝑃)
20. Bagaimana untuk mengubah duty cycle untuk pwm mode phasa correct?
21. Buat rangkaian seperti gambar berikut dibawah
MODUL II PWM MODE CTC, FAST DAN PHASE CORRECT
22. Buat programnya dengan cara kerja system sbb. Jika tombol ditekan maka output OC1A
duty cyclenya mengecil sebesar 50(h) dan OC1B bertambah sebesar 50(h).
V. Hasil Pengamatan
VI. Kesimpilan
Tuliskan kesimpulan untuk percobaan ini.