Witam
Chciałbym zbadać częstotliwość ( znanego mi sygnału generowanego za pomocą timera1 f=31 Hz) korzystając z trybu icp timera 0.
Mam problem polegający na różnym odczycie pulsów - rozrzut jest na tyle duży że ni jak ma się do częstotliwości zadanej.
Timer 0 konfiguruje :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
obsługa przerwania :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
oczywiście zmienna zezol jest 16 bitowa i opatrzona podobnie jak bufor słówkiem volatile.
Spodziewałbym się odczytów na poziomie 2016 ponieważ okres dla 31 Hz= 0,0322580645s
a częstotliwość sygnału jakim badam to 16 Mhz /256 okres =0,000016
zatem dlaczego otrzymuje wyniki 5000 ale tez 300 .
Proszę o pomoc w zrozumieniu i rozwiązaniu problemu