AVR - priorytety przerwań

Dec 17, 2006 9 Replies

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