avr - problem z sei



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
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 ?


Poprzedni Następny
Wiadomość
Spis treści
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.

Poprzedni Następny
Wiadomość
Spis treści
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ń.


Poprzedni Następny
Wiadomość
Spis treści
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.