Przerwania w AVRze;

Apr 22, 2004 4 Replies

zalozmy, ze wywolalo sie dowolne przerwanie w AVRze; czy aby wywolalo sie dowolne inne przerwanie, (aby AVR przeszedl do obslugi innego przerwania) to przerwanie obecnie obslugiwane musi sie zakonczyc? (musi nastapic powrot z obslugi przerwania?)



Tak. W momencie wejscia do obslugi przerwania gaszona jest flaga I. Tak samo jak zajbys programowo dal CLI. Aby oblsuga przerwania 1 mogla zostac przerwana przez przerwanie 2, nalezy w kodzie obslugi przerwania 1 wpisac komende SEI.

Albo w przypadku kiedy przerwanie jest generowane zboczem dzieki istnieniu dodatkowych flag poszczegolnych przerwan zostanie ono wykonane zaraz po instrukcji reti aktualnego przerwania.

Nie chce mi sie teraz czytac papierow od calej rodziny AVR, ale afair to jesli podczas obslugi przerwania nadejda kolejne przerwania (liczba mnoga) to po reti zostanie wywolane kolejne ktore ma najnizszy numer, potem kolejne o wyzszym numerku. Oczywiscie piszac numerki mam na mysli rosnace kolejno adresy wektorow przerwan. Moge sie mylic, ale jesli chodzi o 2313, 8515, 8535 i 4344 to sadze ze mam 100% racje.

Nie, wystarczy tylko wlaczyc przerwania rozkazem SEI.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required