Ech, to jak to jest z przerwaniami w 8051
Totylkoja - 25-09-2006 11:45
Ech, to jak to jest z przerwaniami w 8051 Witam
Czytałem PDF'a do 8051 ale czy to, dlatego że słabo znam angielski czy może,
dlatego że katalog tego nie wyjaśniał mam pewien niedosyt. Wiem, że 8051 na
2 poziomy przerwań i że Timer0 ma wyższy priorytet niż Timer1. Ale co jeśli
chcę mieć 3 przerwania, int0 ustawiony jako "high lewel" i TF0 i TF1 jako
"low lewel" Timer0 i timer1 zliczają ten sam wewnętrzny zegar, ale są
ustawione na inne stopnie podziału. Mimo to, co jakiś czas muszą, generować
przerwanie w tym samym czasie. I tu pytanie co z przerwaniem od TF1 w
trakcie obsługi przerwania od TF0 ? Czy ono "zginie" czy też procesor
"zapamięta je" i zacznie obsługiwać zaraz po skończeniu przerwania TF0?
Czyli czy zaraz po wykonaniu "reti" w obsłudze TF0 zostanie rozpoczęte
przerwanie TF1?
MArek
Andy - 25-09-2006 13:45
Użytkownik "Totylkoja" <marek.b@nie.chce.tego.poczta.fm> napisał w
wiadomości news:ef885h$53v$1@nemesis.news.tpi.pl...
>...
> Czytałem PDF'a do 8051 ale czy to, dlatego że słabo znam angielski czy
> może, dlatego że katalog tego nie wyjaśniał mam pewien niedosyt. Wiem, że
> 8051 na 2 poziomy przerwań i że Timer0 ma wyższy priorytet niż Timer1. Ale
> co jeśli chcę mieć 3 przerwania, int0 ustawiony jako "high lewel" i TF0 i
> TF1 jako "low lewel" Timer0 i timer1 zliczają ten sam wewnętrzny zegar,
> ale są ustawione na inne stopnie podziału. Mimo to, co jakiś czas muszą,
> generować przerwanie w tym samym czasie. I tu pytanie co z przerwaniem od
> TF1 w trakcie obsługi przerwania od TF0 ? Czy ono "zginie" czy też
> procesor "zapamięta je" i zacznie obsługiwać zaraz po skończeniu
> przerwania TF0? Czyli czy zaraz po wykonaniu "reti" w obsłudze TF0
> zostanie rozpoczęte przerwanie TF1?
>
Nie zginie.
Jesli sa na tym samym priorytecie to inne przerwanie, ktore sie
przytrafi w trakcie wykonywania procedury
obslugi przerwania zaczeka do jego skonczenia tzn. do reti.
I chyba, o ile pamietam, wykona sie jedna instrukcja
z glownego programu.
Nastepnie wskoczy do obslugi tego czekajacego przerwania.
--
Andrzej
Totylkoja - 25-09-2006 14:45
witam
Użytkownik "Andy" <anokWYTNIJ@ceti.pl> napisał w wiadomości
news:ef8f6o$ad2$1@elrond.ghnet.pl...
> Użytkownik "Totylkoja" <marek.b@nie.chce.tego.poczta.fm> napisał w
> wiadomości news:ef885h$53v$1@nemesis.news.tpi.pl...
[ciach]
>
> Nie zginie.
>
No to kamień z serca
Bo już się bałem że raz na jakiś czas będzie ginąć i będzie mi się
rozjeżdżał pomiar o to jedno przerwanie
MArek
Adam Wysocki - 26-09-2006 04:45
Spinacz biurowy, Andy <anokWYTNIJ@ceti.pl>!
> Jesli sa na tym samym priorytecie to inne przerwanie, ktore sie
> przytrafi w trakcie wykonywania procedury
> obslugi przerwania zaczeka do jego skonczenia tzn. do reti.
A jeśli to drugie przerwanie zostanie zgłoszone np. 2x?
--
Adam Wysocki, Warszawa, PL, GSM 514 710 213,
http://www.chmurka.net/GG 1234, Grono ID 123, FidoNet 2:480/138, QTH KO02MF, SWL SP5-250730
Pozbawił mnie sygnaturki strzał z dwururki (C) tren R @ appm 03.2003
W prezencie dla spamerów:
http://polish-652386062723.spampoison.com/
Darek - 26-09-2006 09:45
> > Jesli sa na tym samym priorytecie to inne przerwanie, ktore sie
> > przytrafi w trakcie wykonywania procedury
> > obslugi przerwania zaczeka do jego skonczenia tzn. do reti.
>
> A jeśli to drugie przerwanie zostanie zgłoszone np. 2x?
zostanie utracone i przerwanie zostanie wykonane jednokrotnie.
Jedna flaga przerwania może zgłosić tylko wystąpienie jednego zdarzenia.
Pozdrawiam
Darek
Jacek M. - 26-09-2006 09:45
>> > Jesli sa na tym samym priorytecie to inne przerwanie, ktore sie
>> > przytrafi w trakcie wykonywania procedury
> >> obslugi przerwania zaczeka do jego skonczenia tzn. do reti.
> >
> >A jeśli to drugie przerwanie zostanie zgłoszone np. 2x?
>
> zostanie utracone i przerwanie zostanie wykonane jednokrotnie.
> Jedna flaga przerwania może zgłosić tylko wystąpienie jednego zdarzenia.
Dawno bawilem sie '51, ale wydaje mi sie ze nie do konca jest to prawda.
Moim zdaniem programista ma obowiazek po wejsciu do funkcji obslugi
przerwania skasowac flage.
Jesli ponowne ustawienie flagi nastapi przed jej skasowaniem to rzeczywiscie
bedzie tak jak kolega napisal. Jesli natomiast flaga zostanie ponownie
ustawiona po jej skasowaniu to po zakonczniu bierzacego przerwania znowu
zostanie ono wywolane. Zaznaczam, ze pisze o tym samym przerwaniu.
Tak jak napisalem dawno zajmowalem sie '51-ami i moge sie mylic.
Jacek M.
Darek - 26-09-2006 10:45
> >> > Jesli sa na tym samym priorytecie to inne przerwanie, ktore sie
> >> > przytrafi w trakcie wykonywania procedury
> > >> obslugi przerwania zaczeka do jego skonczenia tzn. do reti.
> > >
> > >A jeli to drugie przerwanie zostanie zgłoszone np. 2x?
> >
> > zostanie utracone i przerwanie zostanie wykonane jednokrotnie.
> > Jedna flaga przerwania może zgłosić tylko wystąpienie jednego zdarzenia.
> Dawno bawilem sie '51, ale wydaje mi sie ze nie do konca jest to prawda.
> Moim zdaniem programista ma obowiazek po wejsciu do funkcji obslugi
> przerwania skasowac flage.
nie do końca i nie tyczy się to tylko 51, avr ma podobnie a mianowicie,
są przerwania dla których przyjęcie przerwania kasuje flagę a są takie gdzie
trzeba to robić z "łapy" w procedurze obsługi.
> Jesli ponowne ustawienie flagi nastapi przed jej skasowaniem to rzeczywiscie
> bedzie tak jak kolega napisal. Jesli natomiast flaga zostanie ponownie
> ustawiona po jej skasowaniu to po zakonczniu bierzacego przerwania znowu
> zostanie ono wywolane. Zaznaczam, ze pisze o tym samym przerwaniu.
> Tak jak napisalem dawno zajmowalem sie '51-ami i moge sie mylic.
Ja pisałem natomiast, zgodnie z tematem, o różnych przerwaniach. Jeżeli mamy przerwania
o tym samym priorytecie A i B to wykonując procedurę obsługi A
nie można stwierdzić czy przerwanie B pojawiło się 1x czy 10x, dlatego
obsługa przerwania powinna trwać minimalną liczbę cykli zegarowych.
Pozdrawiam
Darek
zanotowane.pldoc.pisz.plpdf.pisz.plkonstruktor.keep.pl