AVR - priorytety przerwań

Dec 17, 2006 9 Replies
Jump to replies (9)

Witam Nie mogę sie doczytać, czy rodzina AVR posiada coś takiego jak priorytety przerwań? Tzn. jedno przerwanie jest nadrzędne względem innych. Może jest jakaś sprzętowa obsługa jak w '51 żeby nie robić tego na piechotę? Z góry dzięki za wszelką pomoc.



Pozdrawiam


Luk@sz napisał(a):

Niestety, nie ma priorytetow. Przerwania sa obslugiwane w kolejnosci wystapienia, a wielokrotne wystapienie przerwania X w trakcie obslugi przerwania Y zostanie zarejestrowane tylko jako jednokrotne...

BartekK napisał(a):

E... coś pomieszałeś? Przecież są priorytety, jest o tym w każdym datasheet, im nizszy adres wektora tym wyższy priorytet ma przerwanie.

Przecież można obsłużyć przerwanie o wyższym priorytecie podczas trwania obsługi niższego. Widzę że jesteś zwolennikiem wyłączonego bitu IE przez caly czas obslugi każdego przerwania...

Tylko w wypadku kiedy nie skończysz obsługiwać przerwania X zanim nadejdzie kolejne zgłoszenie od X.

DJ napisał(a):

E, co ja gadam... tu jest jeszcze inaczej. Kolejne zgłoszenie od X, może przyjść już po tym jak zaczniesz obsługiwać poprzednie od X. Przecież flaga zgłoszenia przerwania jest kasowana sprzętowo tuż po rozpoczęciu jego obsługi... I już można zaflagować następną obsługę...

DJ przemówił ludzkim głosem:

To o czym piszesz to kolejność obsługi przerwań, a nie priorytet.

Ale w ten sposób nie możesz zdecydować o tym, _które_ przerwanie może przerwać (czyli ma wyższy priorytet) obsługę bieżącego przerwania, a które nie (bo ma niższy priorytet).

DJ napisał(a):

A jak zrobisz zeby przerwanie X mialo "wyzszy priorytet" od przerwania Y ? A chwile pozniej, by bylo odwrotnie? Adresy wektorow sa "na stale" w flashu zlokalizowane, nie da sie tutaj nic zmienic, oprocz tego ze jakis tam priorytet jest i koniec.

BartekK napisał(a):

No i to właśnie jest priorytet. Nikt tu nigdzie nie pytał o zmianę priorytetów runtime. Pisałeś że priorytetów w AVR nie ma. Ja piszę że ma. Tyle. Nie mieszajmy pojęć.

DJ napisał(a):

Dziękuję wszystkim za uwagi. Uściślając to pisząc priorytety przerwań miałem na myśli możliwość przyjęcia przerwania X podczas trwania obsługi przerwania Y. Z tego co udało mi się zorientować to w rodzinie AVR nie ma możliwości zmiany tych priorytetów i są one ustalone na stałe. Liczyłem na jakieś zgrabne, sprzętowe rozwiązanie ale jednak bez gimnastyki się nie obejdzie. W tym momencie ukłon w stronę starej poczciwej '51 :)

Pozdrawiam

Przecież możesz przyjąć nawet 100 innych przerwan X podczas obsługi przerwania Y. Ja nie widzę tu żadnego problemu. A w 51 to nie było MOŻLIWE. Nie róbmy problemów tam gdzie ich nie ma.

Mister

Użytkownik "Mister":

W 51 to jest takze mozliwe !

Heliogabal

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required