Forum: Mikrocontroller und Digitale Elektronik AVR nur alle 5-10 min aufwecken


von Matthias D. (marvin42)


Lesenswert?

Hallo,

ich arbeite an einem Batterie-betriebenen Sensor, der sich alle paar 
Minuten per Funkmodul melden soll. Wenn ich die AVR-Datenblätter lese 
und (heffentlich) richtig verstehe, erreiche mit dem Watchdog eine 
"Schlafzeit" von max. ca 2 sec.

Wenn ich zB nur alle 10 min was tun möchte, bleibt mir wohl nur der Weg 
einen Zähler mitzuführen, der 300 Aufwecker mitzählt. oder ?

Kennt noch jemand einen anderen Weg, nur alle 5-10 min aufzuwachen ?

Der Sensor soll im Freien arbeiten, ein externer RC-Wakeup scheint mir 
nicht geeignet - oder evt. ein Reset-Generator, vielleicht was von 
Maxim.

von Ulrich (Gast)


Lesenswert?

Für eine genaue und Sparsame Zeitmessung gibt es Quarze mit 32 kHz. Viel 
AVRs können damit als 2tem Takt den Timer 2 betreiben. Da hat man dann 
einen Vorteiler von 1024 und einen 8 Bit timer. Das gibt dann für das 
Aufwachen eine 8 Sekunden Periode.

Wenn man die 32 kHz als Haupttakt nutzt, geht auch ein 16 Bit Timer und 
dann auch Zeiten bis etwa 30 Minuten. Für ganz gemütliche könnte man 
Teilweise auch noch einen Vorteiler für den Takt dazuschalten, um den µC 
mit z.B. 256 Hz laufen zu lassen. Das reicht dann fast für einen 
Winterschlaf.

So schlimm ist es auch nicht wenn der µC alle 2 Sekunden mal was macht. 
Der ist immer noch rund 99% der Zeit im Schlafmodus.

von Detlev T. (detlevt)


Lesenswert?

Welches Funkmodul? Das RFM12 hat einen Wake-Up-Timer, der einen 
Interrupt auslösen kann.

Ansonsten brauchst du externe Hardware. Ein CD4060 wäre denkbar, aber 
ich weiß nicht, wie weit man da mit der Frequenz bei einem RC-Glied 
runtergehen kann. Super-Luxus wäre ein RTC-Baustein mit Alarm-Interrupt.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Matthias D. schrieb:
> erreiche mit dem Watchdog eine
> "Schlafzeit" von max. ca 2 sec.

Bei neueren AVRs erreichst Du mit dem Watchdog bis zu 8 Sekunden. Du 
kannst den Controller kurz aufwachen lassen, eine Variable hochzählen 
und gleich wieder schlafen legen. Hat die Variable den gewünschten Wert 
erreicht, führst Du einen normalen Programmstart aus und arbeitest die 
gewünschte Funktion ab, bevor Du den Controller wieder schlafen legst. 
Am schnellsten kannst Du den Controller übrigens mit internem Taktgeber 
aufwecken, da dieser sofort anläuft, im Gegensatz zu externen Quarzen 
oder Resoantoren. Wenn Du an den TOSC-Pins einen 32.768Hz-Quarz 
anschließt, kannst Du den internen Oszillator abgleichen, wenn Du eine 
genaue Taktrate brauchst, um z.B. serielle Schnittstellen zu bedienen.

von Falk B. (falk)


Lesenswert?

Siehe Sleep Mode

von Peter D. (peda)


Lesenswert?

Matthias D. schrieb:
> Wenn ich zB nur alle 10 min was tun möchte, bleibt mir wohl nur der Weg
> einen Zähler mitzuführen, der 300 Aufwecker mitzählt. oder ?

Und was stört Dich daran?

Rechne mal nach, was für ein "riesen" Stromunterschied das ist. Ein 
Fliegenschiß auf der Zimmerwand fällt mehr auf.


Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.