Czytam sobie w wolnych chwilach książkę "Język C dla mikrokontrolerów AVR". Dotarłem dzisiaj do rozdziału opisującego tryb prosty timerów i albo ja czegoś nie rozumiem, albo jest w książce błąd. Otóż autor opisując możliwość automatycznego generowania przebiegów na liniach OC1A i OC1B w tym trybie pisze, że:
"Wykorzystanie zdarzenia Compare Match umożliwia także łatwą zmianę współczynnika wypełnienia przebiegu. W tym celu wystarczy zmienić wartości jakimi są zainicjowane rejestry OCR1A i OCR1B. Stosunek wartości tych rejestrów do stałej 65536 określa współczynnik wypełnienia"
Przecież w trybie prostym timerów linie wyjściowe zmieniają stan tylko przy stanie zgodności licznika i rejestrów OCRxA. Licznik zaś zawsze liczy do wartości max 65536 i wtedy i tylko wtedy się zeruje. Tak więc zmieniając wartość rejestrów OCR1A i OCR1B możemy wpływać tylko na czas pierwszego porównania i tym samym pierwszej zmiany stanu na liniach OC1A i OC1B. Kolejne zmiany będą juz następowały zawsze po odliczeniu 65536 tików. Tak więc przebieg wyjściowy będzie miał stałe wypełnienie niezależnie od tego co wpiszemy do OCR1A i OCR1B. Tak mi się przynajmniej wydaje.
"Wykorzystanie zdarzenia Compare Match umożliwia także łatwą zmianę współczynnika wypełnienia przebiegu. W tym celu wystarczy zmienić wartości jakimi są zainicjowane rejestry OCR1A i OCR1B. Stosunek wartości tych rejestrów do stałej 65536 określa współczynnik wypełnienia"
Przecież w trybie prostym timerów linie wyjściowe zmieniają stan tylko przy stanie zgodności licznika i rejestrów OCRxA. Licznik zaś zawsze liczy do wartości max 65536 i wtedy i tylko wtedy się zeruje. Tak więc zmieniając wartość rejestrów OCR1A i OCR1B możemy wpływać tylko na czas pierwszego porównania i tym samym pierwszej zmiany stanu na liniach OC1A i OC1B. Kolejne zmiany będą juz następowały zawsze po odliczeniu 65536 tików. Tak więc przebieg wyjściowy będzie miał stałe wypełnienie niezależnie od tego co wpiszemy do OCR1A i OCR1B. Tak mi się przynajmniej wydaje.
