Witam.
Właśnie przerabiam zagadnienia związana z timerami i niby wszystko działa ale...
Mam taki programik który dla rezonatora 8Mhz powinien generować przerwania co ok 200Hz, przynajmniej według książki tak powinno być.
I teoretycznie, a nawet praktycznie tak jest. Program wgrany na Atmega32. Po zmierzeniu częstotliwości na pinie PD0 poru A, miernik pokazuje 200,3Hz.
Ale w moim przypadku chyba nie powinno to tak działać ponieważ mam na płytce kwarc 16Mhz (opis na rezonatorze CQ16.000)
Fuse bity ustawione tak: L - 0xEF, H - 0xD0.
Czyli żeby otrzymać ok 200Hz przy rezonatorze 16Mhz powinienem wpisać do OCR0 liczbę 77. Jak ją wpiszę zamiast liczby 38 to wynik się nie zgadza. Przy OCR0=77 otrzymuję na wyjściu 100,1Hz.
Liczę to w ten sposób:
OCR0 = (f_cpu 16 000 000 / preskaler 1024 / 200Hz ) -1 = 77
Mimo iż mam rezonator 16Mhz to wszystko działa jakbym miał 8Mhz
I tu moje pytanie co zrobiłem źle lub czego nie zrozumiałem?
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.