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 8
To 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/