BlueDraco napisał: Mniej więcej co 2 tygodnie ktoś tu próbuje obsługiwać przycisk na przerwaniu portu i co dwa tygodnie próbujemy takiemu delikwentowi wybić ten nierozsądny pomysł z głowy. Przeszukaj archiwum. Przycisków NIE obsługuje się przy użyciu przerwań portu, a przy użyciu przerwania timera.
Jak chodzi o mikrokontolery jestem początkujący. Tego typu obsługa była mi potrzebna do przetestowania zasady działania. W układzie, który robię będę używał kontaktronu do zliczania impulsów, a do tego najlepiej chyba będzie wykorzystać właśnie przerwanie zewnętrzne. Niestety nie mam jeszcze kontaktronu ponieważ zamówiłem i ciągle na niego czekam, stąd test na przycisku.
Dodano po 54 [minuty]:
Odejdę lekko od przerwań zewnętrznych i zapytam o przerwanie wewnętrzne. Interesuje mnie wykonanie przerwania co 1sec. Z tego co doczytałem w datasheecie Atmega328p ma ustawione defaultowe taktowanie na 8MHz. W związku z czym w main umieściłem coś takiego:
Zaloguj się, aby zobaczyć kod
natomiast przerwanie obsługuję tak jak w przypadku przerwania zewnętrznego z tego tematu, czyli:
Zaloguj się, aby zobaczyć kod
ale niestety program nie działa. Jakieś porady?
EDIT: Zmieniłem następująco (linie zakomentowane są takie jak wyżej, błędne):
Zaloguj się, aby zobaczyć kod
Wynika z tego, że częstotliwość taktowania procka to 1MHz, a nie 8MHz i to rozumiem, ale nie rozumiem czemu musiałem wpisać do TIMSK1 OCIE1A, a nie OCR1A. Wiem też, że liczenie do wartości 3000 nie odpowiada 1 sekundzie, ale tu wystarczy zmienić preskaler i wartość, do której będę liczył.