avr - problem z sei
Masz problem? Zapytaj na forum elektroda.pl
From: "pw" <pw4_at_nospam_poczta.onet.zmienczterynadwa.pl>
Subject: avr - problem z sei
Date: Tue, 21 Jun 2005 14:30:44 +0200
Mam problem z instrukcją sei w AVR Studio 3 i 4.
Zrobiłem programik w asemblerze przesyłający, jeden
za drugim, bajty przez UART.
Ustawiłem bity TXEN i TXCIE (+sei)
Po przetransmitowaniu bajtu i wejściu do przerwania:
0x0009 - USART0 - TX USART0
bit "I" (ustawiony przez sei) zostaje wyzerowany.
Jak zaradzić tej samowoli ?
Co się stanie jeśli po wyzerowaniu "I" zajdzie potrzeba
obsłużenia przerwania np. INT0 ?
Jeśli przerwanie INT0 nadejdzie w momencie, kiedy I=0 to
chyba nie zostanie obsłużone ?
Jak sobie z tym poradzić ?
Jak uniemożliwić zerowanie "I" po wejściu do przerwania
pod adres 0x0009 (j.w.) ?
Przecież, jeśli już koniecznie musi coś zerować, to może
wystarczy zablokować tylko przerwanie od UART ?
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: Re: avr - problem z sei
Date: Tue, 21 Jun 2005 15:04:19 +0200
Po przetransmitowaniu bajtu i wejściu do przerwania:
0x0009 - USART0 - TX USART0
bit "I" (ustawiony przez sei) zostaje wyzerowany.
Jak zaradzić tej samowoli ?
Jawnie odblokowac przerwania?
Co się stanie jeśli po wyzerowaniu "I" zajdzie potrzeba
obsłużenia przerwania np. INT0 ?
Jeśli przerwanie INT0 nadejdzie w momencie, kiedy I=0 to
chyba nie zostanie obsłużone ?
Nie zostanie, ale zostanie zapamietane, ze bylo i obsluzone zostanie
zaraz po odblokowaniu przerwan (lub wyjsciu z aktualnej procedury
obslugi przerwan).
Jak sobie z tym poradzić ?
Jak uniemożliwić zerowanie "I" po wejściu do przerwania
pod adres 0x0009 (j.w.) ?
A musisz sobie z tym radzic?
Przecież, jeśli już koniecznie musi coś zerować, to może
wystarczy zablokować tylko przerwanie od UART ?
Niekoniecznie. Zauwaz, ze w AVRach ze sprzetowym stosem kilka
jednoczesnych przerwan przepelniloby stos.
--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.
From: Bielsky <bielsky__pomysl_troche_at_nospam_poczta.onet.pl>
Subject: Re: avr - problem z sei
Date: Tue, 21 Jun 2005 15:19:15 +0200
bit "I" (ustawiony przez sei) zostaje wyzerowany.
Jak zaradzić tej samowoli ?
To nie jest samowola tylko działanie rozmyślne.
Po odebraniu przerwania możesz od razu je odblokować, ewentualnie
blokując w międzyczasie przerwania mniej ważne, niż to, które
obsługujesz. W ten sposób sam tworzysz coś w rodzaju priorytetu przerwań.
From: "pw" <pw4_at_nospam_poczta.onet.zmienczterynadwa.pl>
Subject: Re: avr - problem z sei
Date: Tue, 21 Jun 2005 18:13:26 +0200
Dziękuję za odpowiedzi.
Nie wpisałem reti na końcu procedury
przerwania i dlatego "I" pozostawał
wyzerowany. Teraz dopisałem reti
i jest dobrze.