- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 4 von 4

Thema: Arduino/Atmega328PU wake up with a long button press

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    your main problem here is, making the timer in software makes your sleep mode useless, the moment the interrupt is called, the controller leaves it's sleep mode immediately to execute your Interrupt Service Routine (ISR)

    you need to make it a bit more complicated to achive this with maximum efficiency
    Code:
    loop_code(){
       if(buttonisreleased())
          prepare_deep_sleep();
          sleeping = TRUE;
          //enter sleep, store the sleep status to some variable like sleeping = TRUE (important!!!)
          while(sleeping){
             execute_sleep();
          }
       }
    }
    ISR(external_interrupt)
    {
       if(buttonhasbeenpressed()){
          start_timer();
          prepare_low_power_sleep_with_timer();
       else if(buttonhasbeenreleased()){
          stop_timer();
          prepare_deep_sleep();
          sleeping = TRUE;
       }
    }
    ISR{timer_reached_3s)
    {
       sleeping = FALSE;
    }
    when the button is not pressed, the cpui enters deep sleep until you press the button

    whenever an ISR is returning, it re-enters the normal execution, the call after your sleep(), so when the button is pressed but sleep remains true(because your time dod not run out yet), you automatically returns to lo power mode, waiting for either the timer to execute an interrupt or the button to be released

    when you release the button too early, the timer is stopped and deep sleep is re-entered
    when the timer runs up, the sleeping variable is set to false and the sleep loop is left until you again release the button!
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Soltau - Niedersachsen
    Alter
    46
    Beiträge
    1.369
    Mein lieber (Funk-)freund,

    was stimmt mit Dir nicht?

    Nein, du bist hier nicht richtig! Findest du es nicht ziemlich unhöflich in diese Unterhaltung hereinzuplatzen??

    Bitte kann ein Moderator, oder höher, den Thread selbstständig machen. Dieser Beitrag hier darf/kann/soll dann bitte entfernt werden.

    Viele Grüße
    Jörg

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    @HeXPloreR unter dem Beitrag, links neben "Blog-Eintrag" kannst du auf dieses Dreieck mit Ausrufezeichen klicken und den Post melden (hab ich auch gerade gemacht). Ich mag solche Dreistigkeit ebenfalls überhaupt nicht!
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

Ähnliche Themen

  1. AtMega328PU mit Arduino-Bootloader beschreiben - aber wie?
    Von Cysign im Forum AVR Hardwarethemen
    Antworten: 13
    Letzter Beitrag: 03.04.2013, 13:12
  2. Button Arduino Processing (GUI)
    Von paper im Forum Open Source Software Projekte
    Antworten: 0
    Letzter Beitrag: 22.11.2012, 18:38
  3. c: press key to continue
    Von toxi im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 30.10.2005, 14:01
  4. test Programm T/C2-wake up funktionieren nicht richtig
    Von janboejle im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 24.06.2005, 11:35
  5. Begriffe bei Press-Verbindungen
    Von Hellmut im Forum Mechanik
    Antworten: 2
    Letzter Beitrag: 08.02.2005, 19:07

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress