RTV forum PL | NewsGroups PL

Przebieg działania AVR po wybudzeniu z sleep mode przez przerwanie TWI

AVR - sleep mode, przerwania - co robi po wybudzeniu?

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Przebieg działania AVR po wybudzeniu z sleep mode przez przerwanie TWI

Adam Wysocki
Guest

Fri Feb 13, 2009 2:45 am   



Cześć,

AVR zostaje wybudzony z idle sleep przez przerwanie - np. przerwanie TWI. Czy
jest szansa, że wykona chociaż kilka instrukcji w normalnym przebiegu, czy na
pewno zawsze pierwsze co wykona to przerwanie, a dopiero potem wróci do
normalnego przebiegu?

Pytam bo chcę zrobić:

volatile uint8_t flaga = 0;
[...]
while (!flaga)
sleep_mode();

i flaga będzie ustawiana w przerwaniu.

--
http://www.extreme-photo.pl/

Adam Dybkowski
Guest

Fri Feb 13, 2009 2:45 am   



Adam Wysocki pisze:

Quote:
AVR zostaje wybudzony z idle sleep przez przerwanie - np. przerwanie TWI. Czy
jest szansa, że wykona chociaż kilka instrukcji w normalnym przebiegu, czy na
pewno zawsze pierwsze co wykona to przerwanie, a dopiero potem wróci do
normalnego przebiegu?

W dokumentacji jest wg mnie jasno napisane, że najpierw zostanie
wykonana funkcja obsługi przerwania, a potem kolejne instrukcje po SLEEP:

"If an enabled interrupt occurs while the MCU is in a sleep mode, the
MCU wakes up. The MCU is then halted for four cycles in addition to the
start-up time, executes the interrupt routine, and resumes execution
from the instruction following SLEEP."

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Adam Wysocki
Guest

Fri Feb 13, 2009 8:45 am   



Adam Dybkowski <adybkows12@45wp.pl> wrote:

Quote:
W dokumentacji jest wg mnie jasno napisane, że najpierw zostanie
wykonana funkcja obsługi przerwania, a potem kolejne instrukcje po SLEEP:

Jasne - jakoś mi umknęło. Dzięki!

--
http://www.extreme-photo.pl/

mw158979
Guest

Fri Feb 13, 2009 11:12 am   



"Adam Wysocki" <gophi.at.chmurka.net@nospam.invalid> schrieb
Quote:
AVR zostaje wybudzony z idle sleep przez przerwanie - np. przerwanie TWI.
Czy
jest szansa, że wykona chociaż kilka instrukcji w normalnym przebiegu, czy
na
pewno zawsze pierwsze co wykona to przerwanie, a dopiero potem wróci do
normalnego przebiegu?

Pytam bo chcę zrobić:

volatile uint8_t flaga = 0;
[...]
while (!flaga)
sleep_mode();

i flaga będzie ustawiana w przerwaniu.

....
a nie przeszkadza Ci, ze przerwanie np wystapi
po sprawdzeniu while(!flaga) ale przed sleep_mode();?

hej

Adam Dybkowski
Guest

Fri Feb 13, 2009 9:31 pm   



mw158979 pisze:

Quote:
volatile uint8_t flaga = 0;
[...]
while (!flaga)
sleep_mode();

i flaga będzie ustawiana w przerwaniu.

....
a nie przeszkadza Ci, ze przerwanie np wystapi
po sprawdzeniu while(!flaga) ale przed sleep_mode();?

Przerwanie może wystąpić tuż przed wykonaniem instrukcji SLEEP - wg mnie
sensowne wtedy byłoby (w przerwaniu) wykrycie takiej sytuacji i
wyłączenie możliwości zaśnięcia tak aby SLEEP nie zadziałał. Można makro
sleep_mode() rozbić na sleep_enable(); sleep_cpu(); sleep_disable() i w
przerwaniu właśnie dodać sleep_disable(). Wtedy procek nie zaśnie w tym
obiegu pętli while.

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Adam Wysocki
Guest

Mon Feb 16, 2009 6:45 am   



mw158979 <e@tam.pl> wrote:

Quote:
while (!flaga)
sleep_mode();

i flaga będzie ustawiana w przerwaniu.

...
a nie przeszkadza Ci, ze przerwanie np wystapi
po sprawdzeniu while(!flaga) ale przed sleep_mode();?

Słusznie - nie pomyślałem o tym. Dzięki.

--
http://www.extreme-photo.pl/

elektroda NewsGroups Forum Index - Elektronika Polska - Przebieg działania AVR po wybudzeniu z sleep mode przez przerwanie TWI

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map