WinAVR + INTERRUPT

Witam Kompilowałem ostatnio swoje starsze źródła na ATmega32. Program, który wcześniej działał nagle przestał. Tzn. przestał po skompilopwaniu go za pomocą WinAVR-20060421. Patrzę w kod wynikowy, a tam z deklaracji procedur obsługi przerwania zdefiniowanych jako INTERRUPT(vectoR) porobiły się zwykłe procedurki zakończone ret-em. Przerwania zadeklarowane jako SIGNAL(vector) kompilują się poprawnie. Czy wie ktoś z Grupowiczów gdzie się podziała deklaracja INTERRUPT ? W avr-libc wyczytałem (choć nie jest to napisane wprost), że INTERRUPT zniknęło, a pojawiła się deklaracja ISR(vector), ale z tego co zauważyłem w kodzie wynikowym to daje ona na wyjściu dokładnie to samo co SIGNAL.

Pozdrawiam Grzegorz

Reply to
Grzegorz Kurczyk
Loading thread data ...

Grzegorz Kurczyk pisze:

Zdecydowanie ISR(vector) dziala. Roznica pomiedzy ISR a SIGNAL polega chyba na wlaczeniu/wylaczeniu przerwan w trakcie.

Reply to
T.M.F.

Użytkownik T.M.F. napisał:

No właśnie o ten rozkaz sei chodzi. Niestety ISR kompiluje bez niego :-(

Reply to
Grzegorz Kurczyk

Dnia 20.07.2007 Grzegorz Kurczyk snipped-for-privacy@control.slupsk.pl> napisał/a:

INTERRUPT zlikwidowano właśnie po to, aby uniknąć zamieszania. Nie wszyscy rozróżniali, czym się różni SIGNAL od INTERRUPT. W ISR musisz w sposób jawny włączyć sam sobie sei(). Chodzi o to, aby programista od początku do końca wiedział co się dzieje.

Reply to
K.L Piecuch

K.L Piecuch pisze:

Tylko jest jeden problem. Jesli jawnie umieszcze sei() w ciele funkcji to wykona sie ono dopiero po calym prologu, czyli na kilkadziesiat taktow zegara przerwania sa zablokowane. Niby nic, ale w pewnych sytuacjach to moze miec znaczenie. Zostaje co prawda naked i dodanie wlasnego prologu/epilogu ale to dublowanie wczesniejszego signal i interrupt.

Reply to
T.M.F.

T.M.F. przemówił ludzkim głosem:

RTFM!

formatting link
szczególnie paragraf "Nested interrupts"

Reply to
Zbych

Dnia 21.07.2007 T.M.F. snipped-for-privacy@nospam.mp.pl> napisał/a:

Myśle, że to wiele wyjąsni.

formatting link

void TIMER1_COMPB_vect(void) __attribute__((interrupt));

Reply to
K.L Piecuch

Użytkownik K.L Piecuch napisał:

BINGO !!! :-)

O to chodziło. Dzięki serdeczne.

Pozdrawiam Grzegorz

Reply to
Grzegorz Kurczyk

Dnia 21.07.2007 Grzegorz Kurczyk snipped-for-privacy@control.slupsk.pl> napisał/a:

Nie ma sprawy. Ja też się wcześniej na to nadziałem ;-)

Reply to
K.L Piecuch

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.