eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAVR - sleep mode, przerwania - co robi po wybudzeniu?
Ilość wypowiedzi w tym wątku: 6

  • 1. Data: 2009-02-13 01:26:39
    Temat: AVR - sleep mode, przerwania - co robi po wybudzeniu?
    Od: g...@n...invalid (Adam Wysocki)

    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/


  • 2. Data: 2009-02-13 01:45:04
    Temat: Re: AVR - sleep mode, przerwania - co robi po wybudzeniu?
    Od: Adam Dybkowski <a...@4...pl>

    Adam Wysocki pisze:

    > 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.


  • 3. Data: 2009-02-13 06:47:50
    Temat: Re: AVR - sleep mode, przerwania - co robi po wybudzeniu?
    Od: g...@n...invalid (Adam Wysocki)

    Adam Dybkowski <a...@4...pl> wrote:

    > 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/


  • 4. Data: 2009-02-13 10:12:24
    Temat: Re: AVR - sleep mode, przerwania - co robi po wybudzeniu?
    Od: "mw158979" <...@t...pl>

    "Adam Wysocki" <g...@n...invalid> schrieb
    > 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



  • 5. Data: 2009-02-13 20:31:39
    Temat: Re: AVR - sleep mode, przerwania - co robi po wybudzeniu?
    Od: Adam Dybkowski <a...@4...pl>

    mw158979 pisze:

    >> 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.


  • 6. Data: 2009-02-16 05:29:33
    Temat: Re: AVR - sleep mode, przerwania - co robi po wybudzeniu?
    Od: g...@n...invalid (Adam Wysocki)

    mw158979 <...@t...pl> wrote:

    >> 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/

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: