Attiny 84 Sleep-WatchDog

OP #5662289
Hi,
ich möchte einen ATtiny84 energiesparend beutzen. Dafür benötige ich 
sowas wie ein Watchdog. Der soll den µC aber nicht nach einer bestimmten 
Zeit neustarten, sondern nur in den Sleep-Modus versetzen und den ADC 
abschalten.
Danach soll er über einen Taster wieder aufgeweckt werden und die ADCs 
sollen wieder eingeschaltet werden.
Gibt es irgendeine funktion für die Arduino IDE, die sowas kann?

Viele Grüße und schöne Vorweihnachtstage
Flo S
Gast
Also meine Kristallkugel sagt mir das du den Tiny nach einer gewissen 
Zeit ohne Interaktion schlafenlegen willst und dann irgendwann über nen 
Pin Interrupt aufwecken willst. Richtig?

Zu blöd das ich von der Arduino IDE keinen Schimmer hab, normal würde 
ich das über nen Zähler machen der im Timerirgendwas Überlauf Interrupt 
hochgezählt und abgefragt wird und bei jeder entsprechenden Aktion 
wieder auf 0 zurück gesetzt wird. Dann nur noch eine kurze 
Schlaffunktion die aus dem Timer aufgerufen wenn die Abfrage ergeben hat 
das eine entsprechender Wert erreicht wurde.
Gast
So macht man das:
1
timer_t start=milliseconds();
2

3
for (;;) //for ever
4
{
5
    if (taste gedrückt) 
6
    {
7
        start=milliseconds();
8
        // auf den Tastendruck reagieren
9
    }
10

11
    timer_t now=milliseconds();
12
    if (now-start>10000) // 10 Sekunden nichts los
13
    {
14
        // Sleep Modus aktivieren
15

16
        // nach dem Aufwachen:
17
        start=milliseconds();
18
    }
19
}

Timer auf 0 setzen ist keine gute Idee, wenn man noch andere Dinge daran 
messen will.
OP
Stefanus F. schrieb:
> So macht man das:timer_t start=milliseconds();
>
> for (;;) //for ever
> {
>     if (taste gedrückt)
>     {
>         start=milliseconds();
>         // auf den Tastendruck reagieren
>     }
>
>     timer_t now=milliseconds();
>     if (now-start>10000) // 10 Sekunden nichts los
>     {
>         // Sleep Modus aktivieren
>
>         // nach dem Aufwachen:
>         start=milliseconds();
>     }
> }
>

Super!
Ich werden das morgen mal ausprobiren.
Gast
@Flo S.
Dazu brauchst du doch den WD nicht.
Dein Prozessor soll einfach seine Aufgabe ausführen und wenn er fertig 
ist, schicke ihn in den Tiefschlaf.
Den Taster lässt du den INT0-Interrupt bedienen, um den μC wieder 
aufzuwecken. Du musst dazu eine IRQ-Routine, ggf. leer, installieren.
Er setzt dann die Bearbeitung nach dem Sleep-Befehl wieder fort.
Flo S. schrieb:
> ich möchte einen ATtiny84 energiesparend beutzen. Dafür benötige ich
> sowas wie ein Watchdog. Der soll den µC aber nicht nach einer bestimmten
> Zeit neustarten, sondern nur in den Sleep-Modus versetzen und den ADC
> abschalten.

Man kann den Watchdog auch im Interrupt-Mode benutzen wie jeden anderen 
Timer auch.

Flo S. schrieb:
> Danach soll er über einen Taster wieder aufgeweckt werden und die ADCs
> sollen wieder eingeschaltet werden.

Die ADCs? Ein Attiny84 hat nur einen ADC mit mehreren gemultiplexten 
Eingängen. Willst du analoge Spannungen messen?

Flo S. schrieb:
> Gibt es irgendeine funktion für die Arduino IDE, die sowas kann?

Mit Sicherheit, leider kenne ich mich damit zu wenig aus.

Aber wie schon gesagt wurde: Warum den Attiny mit dem Watchdog schlafen 
legen? Einfach den Attiny seine Arbeit machen lassen und wenn er fertig 
ist legst du ihn schlafen. Der Taster bekommt einen Interrupt und weckt 
den Attiny wieder auf.
Was man natürlich machen kann ist, den Watchdogtimer als Taktquelle des 
Attinys benutzen. Das drückt den Energiebedarf insbesondere im Sleep 
enorm.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.