WinAVR + INTERRUPT

Jul 20, 2007 8 Replies

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


Grzegorz Kurczyk pisze:

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

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

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

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.

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.

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

RTFM!

formatting link
szczególnie paragraf "Nested interrupts"

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));

Użytkownik K.L Piecuch napisał:

BINGO !!! :-)

O to chodziło. Dzięki serdeczne.

Pozdrawiam Grzegorz

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 ;-)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required