Dariusz Zolna
Guest
Thu Jul 05, 2007 2:50 pm
Mierzę sobie na Atmega32 częstotliwość impulsów (a konkretnie to okres,
czyli czas pomiędzy 2 kolejnymi impulsami) - na przerwaniu zegara śmiga
licznik, a przerwanie zewnętrzne (INT0) zapamiętuje stan tego licznika i
go zeruje. Jednak coś jest nie tak i jeden na kilkanaście /
kilkadziesiąt impulsów jest gubiony. Co może być przyczyną? Wystąpienie
w tym samym czasie przerwania zegarowego i zewnętrznego? Jeśli tak, to
jak rozwiązać problem?
Dariusz Żołna
Dariusz Zolna
Guest
Thu Jul 05, 2007 3:39 pm
Dariusz Zolna napisał(a):
Quote:
Mierzę sobie na Atmega32 częstotliwość impulsów (a konkretnie to okres,
czyli czas pomiędzy 2 kolejnymi impulsami) - na przerwaniu zegara śmiga
licznik, a przerwanie zewnętrzne (INT0) zapamiętuje stan tego licznika i
go zeruje. Jednak coś jest nie tak i jeden na kilkanaście /
kilkadziesiąt impulsów jest gubiony. Co może być przyczyną? Wystąpienie
w tym samym czasie przerwania zegarowego i zewnętrznego? Jeśli tak, to
jak rozwiązać problem?
No i sam sobie odpowiedziałem - wystarczyło zmienić przerwania na blokujące.
Dariusz Żołna
Grzegorz Kurczyk
Guest
Thu Jul 05, 2007 3:49 pm
Użytkownik Dariusz Zolna napisał:
Quote:
Mierzę sobie na Atmega32 częstotliwość impulsów (a konkretnie to okres,
czyli czas pomiędzy 2 kolejnymi impulsami) - na przerwaniu zegara śmiga
licznik, a przerwanie zewnętrzne (INT0) zapamiętuje stan tego licznika i
go zeruje. Jednak coś jest nie tak i jeden na kilkanaście /
kilkadziesiąt impulsów jest gubiony. Co może być przyczyną? Wystąpienie
w tym samym czasie przerwania zegarowego i zewnętrznego? Jeśli tak, to
jak rozwiązać problem?
Dariusz Żołna
Witam
A masz inne źródła przerwań ? Ewentualnie blokuj je na czas pomiaru.
Lepiej do tego celu zastosować rejestr ICP, który jest sprzęgnięty z
TIMER1. Realizuje Twój problem całkowicie sprzętowo. Wystarczy odczytać
zawartośc rejestru ICP.
Pozdrawiam
Grzegorz