atmega: timer1 w trybie CTC

May 03, 2007 0 Replies

Timer1 dziala w trybie CTC: liczy od 0 do wartosci w OCR1A, generuje IRQ przy przepelnieniu (dojsciu do OCR1A). Taki prosty "zegarek-cron" w sofcie. OCR1A jest tak ustawione by INT bylo np co 0.1s albo 1s dla danego F_CPU i prescalera timera1. Pewnie nie jeden z was taki tryb uzywal.



Czy/jak da sie uzyc w tym trybie OCR1B by na nozce OC1b uzystac pwm? Bo na nozce OC1a raczej sie nie da ;) (najwyzej prostokat o F_zliczania/2 albo czysto programowo) teraz mam:



TCCR1A = 0; TCCR1B = (1<<WGM12)|(TIMER1PRESCALE); // timer1prescale =0x04 dla 256 OCR1A = ODPOWIEDNIA_WARTOSC; // u mnie 15624 TIMSK |= (1<<OCIE1A);



Domyslam sie ze wpis wartosci OCR1B > OCR1A daje pwm=max caly czas (lub min, zaleznie od polaryzacji wyjscia)



Czy wystarczy COM1B1:0 = 2 lub 3 i bedzie pwm na OC1b juz generowany (o okresie rownym czasowi zliczania timer1)?


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required