ATNEL tech-forum https://forum.atnel.pl/ |
|
Wątpliwości odnośnie działania przerwań https://forum.atnel.pl/topic20369.html |
Strona 1 z 1 |
Autor: | MisterWhite [ 6 mar 2018, o 22:19 ] |
Tytuł: | Wątpliwości odnośnie działania przerwań |
Witam Będę zobowiązany za wyjaśnienie pewnej drobnej wątpliwości odnośnie działania przerwań . Jak one działają, jaka jest ich kolejnośc gdy pojawią się jednocześnie wiem. Wiem też ( a właściwie wydaje mi się ,że tak jest ) że gdy w trakcie przerwania o wyższym priorytecie pojawi się przerwanie o niższym priorytecie, to czeka ono w "kolejce" i zostanie obsłużone dopiero po zakończeniu tego pierwszego, "ważniejszego". Nie jestem jednak pewien czy jeśli w trakcie gdy obsługiwane jest przerwanie podrzędne pojawi się przerwanie o wyższym priorytecie ,to przerwie ono dotychczasowy proces i wymusi obsłużenie samego siebie w pierwszej kolejności . No i czy takie działąnie nie wprowadzi dodatkowych opóźnień. Pozdrawiam |
Autor: | mirekk36 [ 6 mar 2018, o 22:53 ] |
Tytuł: | Re: Wątpliwości odnośnie działania przerwań |
w prockach avr nie ma priorytetów przerwań |
Autor: | kijas1 [ 7 mar 2018, o 06:53 ] |
Tytuł: | Re: Wątpliwości odnośnie działania przerwań |
Podaj jaki typ układu, bo procki avr serii megaAVR0-series np. Attiny1617 czy Atmega 4809 priorytety już mają(chociaż szału z nimi nie ma). Xmegii zresztą też. Jeśli mowa o tych starszych seriach to jest tak jak napisał mirekk36. |
Autor: | MisterWhite [ 7 mar 2018, o 08:06 ] |
Tytuł: | Re: Wątpliwości odnośnie działania przerwań |
kijas1 napisał(a): Podaj jaki typ układu, bo procki avr serii megaAVR0-series np. Attiny1617 czy Atmega 4809 priorytety już mają(chociaż szału z nimi nie ma). Xmegii zresztą też. Jeśli mowa o tych starszych seriach to jest tak jak napisał mirekk36. Atmega 8To znaczy mam rozumieć, że wszystkie przerwania są równouprawnione? W nocie katalogowej podają listę przerwań mówiąc iż czym niższy adres tym przerwanie mniej uprawnione. Coś źle przeczytałem? Wysłane z mojego XT1580 przy użyciu Tapatalka ------------------------ [ Dodano po: 44 minutach ] W tej sytuacji nie bardzo wiem jak rozumieć notę katalogową ATMega 8 , cytuję: "The complete list of Vectors is shown in "interrupts" on page 46. The list also determines the priority levels of the different interrupts. The lower the adress the higher ist the priority level" Byłbym zobowiązany za wyjaśnienie sytuacji, bo nie ukrywam, że trochę się gubię. Pozdrawiam WTG |
Autor: | kijas1 [ 7 mar 2018, o 09:07 ] |
Tytuł: | Re: Wątpliwości odnośnie działania przerwań |
To o czym piszesz dotyczy priorytetów przy JEDNOCZESNYM zgłoszeniu przerwań(wtedy o kolejności decyduje priorytet jaki jest podany). Jeśli już jesteś w przerwaniu to w Atmega 8 są one równouprawnione, czyli jedno nie wywłaszczy drugiego . |
Autor: | MisterWhite [ 7 mar 2018, o 09:20 ] |
Tytuł: | Re: Wątpliwości odnośnie działania przerwań |
Dzięki, to mi wszystko wyjaśnia ------------------------ [ Dodano po: 10 minutach ] Rozumiem więc ,że gdy w trakcie jednego przerwania nadejdzie drugie , to grzecznie czeka w kolejce aż to pierwsze się zakończy i wtedy automatycznie już przystępuje do realizacji? |
Autor: | kijas1 [ 7 mar 2018, o 09:44 ] |
Tytuł: | Re: Wątpliwości odnośnie działania przerwań |
MisterWhite napisał(a): Rozumiem więc ,że gdy w trakcie jednego przerwania nadejdzie drugie , to grzecznie czeka w kolejce aż to pierwsze się zakończy i wtedy automatycznie już przystępuje do realizacji? Dobrze rozumiesz. |
Autor: | APAP75 [ 7 mar 2018, o 11:11 ] |
Tytuł: | Re: Wątpliwości odnośnie działania przerwań |
Wynika to z prostego mechanizmu - po wywołaniu przerwania blokowane jest "globalne zezwolenie przerwań " - bit I w rejestrze SREG jest zerowany. Po wyjściu z obsługi przerwania jest on ustawiany. Czyli - wykonywanie procedury przerwania blokuje inne przerwania... Trochę Ci tu namieszam - wystarczy w obsłudze przerwania dać sei() i już możesz przerwać przerwanie - ale się tego nie robi, bo można łatwo stracić kontrolę i potem prosty z pozoru program może działać nie tak jak byś chciał. |
Autor: | MisterWhite [ 7 mar 2018, o 11:33 ] |
Tytuł: | Re: Wątpliwości odnośnie działania przerwań |
APAP75 napisał(a): wystarczy w obsłudze przerwania dać sei() i już możesz przerwać przerwanie - ale się tego nie robi, bo można łatwo stracić kontrolę i potem prosty z pozoru program może działać nie tak jak byś chciał. Wielkie dzięki za "kruczek" Bedę unikał, ale w sytuacjach krytycznych czasowo może się bardzo przydać. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |