Witam,
Może ktoś mi podpowie bo się już pogubiłem. W zasadzie to próbuję dojść do sedna tak z ciekawości bardziej niż potrzeby ale:
otóż mam sobie procka ATmega168, i chcę ustawić tryb Fast PWM korzystając z Timera0 i wyjścia OC0A
Jak widać z PDF'a ten timer udostępnia 7 trybów z czego tryb 6 i 4 są Reserved czyli nie dostępne i OK. Tak więc jeśli chcę skorzystać np z trybu 3 to wszystko mi działa pięknie i wydaje mi się, że wszystko rozumiem dokładnie z noty PDF - co i jak tam działa wewnątrz procka.
Jednak tryb 7 - jak narazie doprowadza mnie do szewskiej pasji - tzn może nie tryb tylko to, że tu już chyba czegoś nie potrafię zrozumieć z noty PDF i mam problem.
Otóż w dla trybu nr 7 muszę ustawić 3 bity na 1
WGM20 , WGM10 oraz WGM00 - prawda ? (i robię tak)
teraz chciałbym pozostawić ustawienia bitów (tak jak miałem w trybie 3): COM0A1 oraz COM0A0 czyli żeby mieć (non inverting mode) no i tu kiszka
bo na wyjściu OC0A mam cały czas stan niski natomiast jak zmienię te bity na (iverting mode) to cały czas mam stan wysoki bez względu na to co wpiszę do rejestru OCR0A.
Jedyne co wychodzi to tryb gdy: COM0A0=1 oraz COM0A1=0 czyli na wyjściu OC0A powinienem mieć: Toggle OC0A on Compare Match. przy WGM02 = 1. I to się zgadza - wtedy zmieniając OCR0A uzyskuję płynną zmianę częstotliwości na tymże wyjściu (tyż fajny i przydatny tryb powiedzmy)
Ale czym w takim raze generalnie różni się tryb 3 od trybu 7 ????? Tzn widzę , że tutaj wartość TOP dla Timera stanowi OCR0A zamiast stała wartość 0xFF jak wtrybie 3. I to mnie właśnie myli, i przez to nie rozumiem jak wykorzystać ten tryb??? podobna sprawa zresztą jest z Phase Correct PWM (tryb 5). No ale myślę, że jak ktoś mi rozjaśni o co chodzi w trybie 7 to resztę zajarzę.
Oczywiście czytałem już ze 100 razy powyżej opisu rejestrów - rozdział
14.7 Modes of Operation
a w nim
14.7.3 Fast PWM Mode
ale jakoś - nie wiem czy ślepy jestem czy jak? nie mogę złapać różnicy właśnie dla trybu 7
nie daje mi to spać po nocach
snią mi się koszmary o Timerach itp - więc pomóżcie 
Może ktoś mi podpowie bo się już pogubiłem. W zasadzie to próbuję dojść do sedna tak z ciekawości bardziej niż potrzeby ale:
otóż mam sobie procka ATmega168, i chcę ustawić tryb Fast PWM korzystając z Timera0 i wyjścia OC0A
Jak widać z PDF'a ten timer udostępnia 7 trybów z czego tryb 6 i 4 są Reserved czyli nie dostępne i OK. Tak więc jeśli chcę skorzystać np z trybu 3 to wszystko mi działa pięknie i wydaje mi się, że wszystko rozumiem dokładnie z noty PDF - co i jak tam działa wewnątrz procka.
Jednak tryb 7 - jak narazie doprowadza mnie do szewskiej pasji - tzn może nie tryb tylko to, że tu już chyba czegoś nie potrafię zrozumieć z noty PDF i mam problem.
Otóż w dla trybu nr 7 muszę ustawić 3 bity na 1
WGM20 , WGM10 oraz WGM00 - prawda ? (i robię tak)
teraz chciałbym pozostawić ustawienia bitów (tak jak miałem w trybie 3): COM0A1 oraz COM0A0 czyli żeby mieć (non inverting mode) no i tu kiszka
Jedyne co wychodzi to tryb gdy: COM0A0=1 oraz COM0A1=0 czyli na wyjściu OC0A powinienem mieć: Toggle OC0A on Compare Match. przy WGM02 = 1. I to się zgadza - wtedy zmieniając OCR0A uzyskuję płynną zmianę częstotliwości na tymże wyjściu (tyż fajny i przydatny tryb powiedzmy)
Ale czym w takim raze generalnie różni się tryb 3 od trybu 7 ????? Tzn widzę , że tutaj wartość TOP dla Timera stanowi OCR0A zamiast stała wartość 0xFF jak wtrybie 3. I to mnie właśnie myli, i przez to nie rozumiem jak wykorzystać ten tryb??? podobna sprawa zresztą jest z Phase Correct PWM (tryb 5). No ale myślę, że jak ktoś mi rozjaśni o co chodzi w trybie 7 to resztę zajarzę.
Oczywiście czytałem już ze 100 razy powyżej opisu rejestrów - rozdział
14.7 Modes of Operation
a w nim
14.7.3 Fast PWM Mode
ale jakoś - nie wiem czy ślepy jestem czy jak? nie mogę złapać różnicy właśnie dla trybu 7
nie daje mi to spać po nocach
