Witam, mam kilka pytań dotyczących PWM-a w procku atmega8.
Próbuję ustawić 8bit fast PWM-a na pinie OC1A takim kodem:
I efektem takiego ustawienia (w symulatorze)wartość TCNT1 rośnie do 255 i zamiast zacząć od zera liczy w dół. W nocie pisze, że "The counter counts from BOTTOM to TOP then restarts to BOTTOM" więc chyba gdzieś popełniam błąd.
Nie za bardzo też rozumiem jak ustawić bity COM1A1 i COM1A0 w rejestrze TCCR1A. Nie rozumiem dwóch ostatnich wierszy w tabeli 37(datasheet)
Trzecia wątpliwość to czym różnią się te tryby PWM:
1. Normal?
2. Fast PWM - tu większość rozumiem
3. Phase Correct PWM?
4. Phase and Frequency Correct PWM?
Szukając na forum znalazłem prawie same przykładowe kody uruchomienia PWM-a które nic nie mówią o wymienionych wyżej problemach.
Pozdrawiam.
Próbuję ustawić 8bit fast PWM-a na pinie OC1A takim kodem:
;...
ldi r16,(1<<PB1)
out DDRB, r16
ldi r16, (1<<WGM10|1<<COM1A1);mode 5 (8bit fast pwm)
out TCCR1A, r16
ldi r16, (1<<WGM12|1<<CS10)
out TCCR1B, r16
ldi r16, 120;wypelnienie 120/255
out OCR1AL, r16
loop:
rjmp loop
I efektem takiego ustawienia (w symulatorze)wartość TCNT1 rośnie do 255 i zamiast zacząć od zera liczy w dół. W nocie pisze, że "The counter counts from BOTTOM to TOP then restarts to BOTTOM" więc chyba gdzieś popełniam błąd.
Nie za bardzo też rozumiem jak ustawić bity COM1A1 i COM1A0 w rejestrze TCCR1A. Nie rozumiem dwóch ostatnich wierszy w tabeli 37(datasheet)
Trzecia wątpliwość to czym różnią się te tryby PWM:
1. Normal?
2. Fast PWM - tu większość rozumiem
3. Phase Correct PWM?
4. Phase and Frequency Correct PWM?
Szukając na forum znalazłem prawie same przykładowe kody uruchomienia PWM-a które nic nie mówią o wymienionych wyżej problemach.
Pozdrawiam.