Licznik na ATmega8535 a na AT90S8535

Jun 05, 2005 1 Replies

Witam Serdecznie!



Na AT90S8535 zrobiłem sobie licznik impulsów i elegancko zlicza. Zrbiłem to na dwa sposoby (poniższy kod) z wykorzystaniej jednego timera i bardziej dokładny z wykorzystaniem 2 Timerów. Najgorsze jest to że gdy wsadziłem ATmega8535 na lcd pojawia mi się zero tak jakby counter w ogóle nie zliczał impulsów. Zegar procków (7.372.800 Hz) ten sam.



Co jest nie tak ? Pomóżcie !


1) Config Timer1 = Counter , Edge = Rising Cls : Lcd "Czestosciomierz" : Wait 1 'powitanie

Do 'program główny - pętla Timer1 = 0 'zeruj licznik Start Timer1 'zacznij liczyć Wait 1 'zliczaj impulsy przez



1 sekundę Stop Timer1 'zatrzymaj zliczanie Cls 'czyść ekran Lcd "F=" ; Timer1 ; "Hz" 'wyświetl wynik Loop 'koniec pętli


2) Dim Timebase As Word , Wynik As Word : Enable Interrupts : Enable Timer0 Config Timer1 = Counter , Edge = Rising 'T/C1 - licznik impulsów Config Timer0 = Timer , Prescale = 1 ' przepełnienie co 64us On Timer0 Licz Timebase = 28800



Do 'program główny Cls : Lcd "F=" ; Wynik ; "Hz" : Waitms 100 'wyświetl wynik Loop : End 'koniec programu głównego



Licz: 'Timer0 przepełniony co 64us Decr Timebase ' zmniejsz licznik Tb If Timebase = 0 Then 'po odliczeniu 1 sekundy: Wynik = Timer1 'przepisz stan licznika do zmiennej Wynik Timer1 = 0 'wyzeruj licznik - niech liczy dalej Timebase = 28800 End If : Return 'koniec procedury obsługi przerwania


Join the Discussion

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

Didn't find your answer?

Ask the community — no account required