55555 napisał(a):
Problemem jest też dla mnie dokumentacja mikro kontrolera i konfiguracja jego sprzętów.
Niestety ale opanowanie obcowania z notami pdf to podstawa więc musisz się przemóc i poćwiczyć - poprostu się pobawić i posprawdzać jak działa jaka opcja - bez tego będzie Ci ciężko opanować AVR-y.
Co do atmegi64A to w nocie masz dział Interrupts a w nim opis poszczególnych przerwań oraz poddział Register Description a w nim rozpisane rejestry w których takie przerwania się konfiguruje. I tak
- w rejestrach EICRA i EICRB konfigurujesz sposób wyzwalania czyli u Ciebie zbocze narastające. Z tabeli Interrupt Sense Control wynika że trzeba ustawić oba bity ISCn0 i ISCn1 na "1" dla danego przerwania, a tak się składa że zarówno INT2 jak i INT3 swoje bity ISC ma w rejestrze EICRA więci:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
następne co musisz zrobić to zezwolić na przerwanie dla tych dwóch intów co zrobisz ustawiając jedynki w rejestrze EIMSK – External Interrupt Mask Register czyli:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Powyższe ustawienia oczywiście przed pętlą główną programu. Następnie również przed pętlą główną ale po poprzednich ustawieniach włączasz globalne zezwolenie na przerwania:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Od tego momentu procek będzie wykonywał przerwania od INT2 i INT3 ale oczywiście pod warunkiem że w programie nie zabraknie procedur obsługi tych przerwań czyli:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
oczywiście procedury obsługi przerwań umieszczasz poza ciałem głównego programu, najlepiej pod kodem głównego programu. I tu radzę zapamiętać: włączeniu jakiegokolwiek przerwania
MUSI toważyszyć umieszczenie w programie obsługi tego przerwania - procedura może być nawet pusta, ale musi być. Kompilator nie wywali Ci błędu przy jej braku ale procek poprostu stanie.
A i oczywiście na samym początku musisz zainkludować pliki biblioteczne od obsługi przerwań:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
bez tego pojawią się pchełki z warningami...
Jak widzisz sama aktywacja przerwań jest banalnie prosta
![Puszcza oko ;)](https://forum.atnel.pl/images/smilies/icon_e_wink.gif)
, a noty wbrew pozorom są dosyć przejrzyste choć niekiedy zawierają drobne błędy, a ilość stron może przytłaczać (nota atmegi64A ma 505 stron) ale jest spis treści z hiperlinkami więc poruszanie się po nocie jest wygodne.