Forum: Mikrocontroller und Digitale Elektronik Sleep Mode Logik Frage


von Ja (Gast)


Lesenswert?

Guten Tag, ich habe eine Frage bezüglich Sleep Modi:
Ist es prinzipiell möglich, eine Art Uhr (externer Oszillator) zum 
Aufwecken des uCs zu verwenden. Das heißt, dass er nach 10 Sekunden 
schläft und nach 5 Stunden aufwacht o.Ä.?
Danke.

von Axel S. (a-za-z0-9)


Lesenswert?

Ja

von c-hater (Gast)


Lesenswert?

Ja schrieb:

> Ist es prinzipiell möglich, eine Art Uhr (externer Oszillator) zum
> Aufwecken des uCs zu verwenden. Das heißt, dass er nach 10 Sekunden
> schläft und nach 5 Stunden aufwacht o.Ä.?

Definitiv ja.

von Peter D. (peda)


Lesenswert?

Viele MCs haben sogar einen internen Timer der mit einem Uhrenquarz 
laufen kann. Und manche sogar einen extra V_Batt Anschluß, da läuft die 
RTC auch ohne VCC.
Etwas nervig ist, daß viele RTC oft ein crudes Dezimalformat zählen und 
nicht einfach als 32Bit Sekunden.

Außen noch ne extra RTC ranzupappen ist daher veraltet.

: Bearbeitet durch User
von Ja (Gast)


Lesenswert?

Ließe sich bspw. der Timer0 ( in Zusammenarbeit mit dem internen 
Taktgeber) so instrumentalisieren, dass er das Ein- und Aufwachen 
regelt?

von Ja (Gast)


Lesenswert?

Bzw. Wäre es möglich (wenn auch armselig), den Watchdog (hat ja ein 
Maximum von 8sec) mit einem Counter zu versehen, der ihn dann immer 
wieder in den Schlaf schickt, bis der Counter den entsprechenden Wert 
für z.B. eine Stunde erreicht hat?

von MaWin (Gast)


Lesenswert?

Ja schrieb:
> Bzw. Wäre es möglich (wenn auch armselig), den Watchdog (hat ja ein
> Maximum von 8sec) mit einem Counter zu versehen, der ihn dann immer
> wieder in den Schlaf schickt, bis der Counter den entsprechenden Wert
> für z.B. eine Stunde erreicht hat?

Ja.

Allerdings ist der Watchdog ein RC Oszillator du nicht besonders genau,
ausserdem braucht der uC bei laufendem Watchdog mehr Strom.

PicoPower uC sind besser selbst wenn der Quartz-Oszillator einen Timer 
durchlaufen lässt.

von Joachim B. (jar)


Lesenswert?

Ja schrieb:
> Ist es prinzipiell möglich, eine Art Uhr (externer Oszillator) zum
> Aufwecken des uCs zu verwenden. Das heißt, dass er nach 10 Sekunden
> schläft und nach 5 Stunden aufwacht o.Ä.?

sogar sehr einfach mit einer RTC DS3231, vergesst den doofen 32kHz Quarz 
am AVR

http://www.ebay.de/itm/DS3231-AT24C32-IIC-Module-Precision-RTC-Module-Memory-Module-/251357891421?pt=LH_DefaultDomain_0&hash=item3a86190b5d

aber Achtung manche liefern die LiR2032 nicht mit, der hier ja.
Eine LiR2032 hier kaufen ist teurer als das Modul, eine CR2032 kann man 
nicht überall einsetzen wenn Diode und Lade R bestückt sind.

Ja schrieb:
> dass er nach 10 Sekunden
> schläft

Ja schrieb:
> nach 5 Stunden aufwacht

stellt man den Wecker in der DS3231 auf +5 Stunden und +10s und schickt 
den Atmel nach 10s schlafen.

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Ja schrieb:
> Bzw. Wäre es möglich (wenn auch armselig), den Watchdog (hat ja ein
> Maximum von 8sec) mit einem Counter zu versehen, der ihn dann immer
> wieder in den Schlaf schickt, bis der Counter den entsprechenden Wert
> für z.B. eine Stunde erreicht hat?

Genau so tut man das, wenn man lange Schlafzeiten erreichen will und 
die Anforderungen an die Genauigkeit eher gering sind. Und es ist 
keineswegs armselig.

Alternativen sind ein Uhrenquarz am Low Frequency Crystal Oscillator 
und Timer2 zum Aufwecken. Das geht auch nur längstens alle 8 Sekunden. 
Allerdings unterstützen das nicht alle AVRs.

Oder eine externe RTC die den µC per Hardware-Interrupt weckt.

Was davon den wenigsten Strom verbraucht, muß man mal mit spitzem Stift 
durchrechnen. Das "aufwachen und den Software-Zähler eins hochzählen" 
verbraucht allerdings viel weniger Energie als man gemeinhin annimmt.

von Joachim B. (jar)


Lesenswert?

Axel Schwenke schrieb:
> Das "aufwachen und den Software-Zähler eins hochzählen"
> verbraucht allerdings viel weniger Energie als man gemeinhin annimmt.

das mag sein nur mag ich die filigranen 32kHz Quarze nicht und mit einer 
RTC muss ich weder Platz für Uhr Code und Datum Code im µC vorrätig 
halten noch das in die SW einbauen, so eine RTC erleichtert doch sehr, 
zumal sie kaum mehr kostet als ein Uhrenquarz hier.

wie oft muss ein µC aufwachen um die Uhr weiterlaufen zu lassen wenn das 
Ereignis in 100 Tagen stattfinden soll?

RTC einmal programmieren Alarm auf +100 Tage
µC aufwachen um die Uhr eine Sekunde weiterzuschalten, den Vergleich 
machen?

: Bearbeitet durch User
von picalic (Gast)


Lesenswert?

Servus,

soweit ich sehe, hat der Threadstarter nur von "einer Art Uhr" 
geschrieben und keine Angaben zur geforderten Genauigkeit gemacht. 
Vielleicht ist ein simpler, interner und relativ ungenauer Watchdog 
genau das, was er braucht...

von Axel S. (a-za-z0-9)


Lesenswert?

Joachim B. schrieb:
> Axel Schwenke schrieb:
>> Das "aufwachen und den Software-Zähler eins hochzählen"
>> verbraucht allerdings viel weniger Energie als man gemeinhin annimmt.
>
> das mag sein nur mag ich die filigranen 32kHz Quarze nicht

Ich hege Zweifel daran, daß der TE deine Abneigungen gegen bestimmte 
Bauelemente als valides Argument ansieht.

> und mit einer
> RTC muss ich weder Platz für Uhr Code und Datum Code im µC vorrätig
> halten noch das in die SW einbauen, so eine RTC erleichtert doch sehr,
> zumal sie kaum mehr kostet als ein Uhrenquarz hier.

Das ist auf so vielen Ebenen falsch.

Zum einen stimmt es nicht, daß eine RTC "kaum mehr kostet" als ein 
Uhrenquarz. Vor allem schon deswegen nicht, weil die meisten RTC 
erfordern, einen externen Uhrenquarz anzuschließen. Was dein Argument 
von oben gleich nochmal hinfällig macht. Und die RTC, die einen Quarz 
eingebaut haben, sind nicht billig, sondern im Gegenteil oft deutlich 
teurer als RTC plus Quarz.

Was den Aufwand an Code angeht - die Kommunikation mit der RTC kriegt 
man auch nicht zum Nulltarif. Aber man braucht dann zusätzlich noch 
Platinenfläche. Und Pins zur Kommunikation mit der RTC.

> wie oft muss ein µC aufwachen um die Uhr weiterlaufen zu lassen wenn das
> Ereignis in 100 Tagen stattfinden soll?

Nutzen sich bei deinen µC die Interrupts ab? Oder bekommst du Geld 
zurück, wenn dein µC länger schläft?

Deine Argumente sind so armselig und an den Haaren herbeigezogen, daß 
ich mich frage ob du nicht bloß gegen mich stänkern wolltest.

Dabei hätte es durchaus gute Argumente für eine RTC gegeben. Z.B. daß 
die meisten RTC eine Notversorgung per Batterie vorsehen und so das 
Aufwachen auch dann noch funktioniert, wenn zwischenzeitlich mal die 
Hauptversorgung ausfällt. Oder daß RTC typisch noch ein bisschen RAM 
enthalten, das man zum Abspeichern von Konfigurationsdaten verwenden 
kann und das im Gegensatz zu EEPROM instantan und beliebig oft 
beschreibbar ist.

von Thomas E. (thomase)


Lesenswert?

Joachim B. schrieb:
> wie oft muss ein µC aufwachen um die Uhr weiterlaufen zu lassen wenn das
> Ereignis in 100 Tagen stattfinden soll?

Konstruier hier nicht so einen an den Haaren herbeigezogenen Unsinn. Der 
Normalfall ist, dass der Controller mehrmals pro Sekunde aufwacht.

Joachim B. schrieb:
> das mag sein nur mag ich die filigranen 32kHz Quarze nicht

Das ist dein Problem. Ich nenne sowas Wurstfingereffekt.

mfg.

von Peter D. (peda)


Lesenswert?

Joachim B. schrieb:
> das mag sein nur mag ich die filigranen 32kHz Quarze nicht

Die Metallröhrchen mit 2 Anschlußdrähten sind auch vom ungeübten Bastler 
leicht einzulöten.
Ganz im Gegensatz zu den modernen RTCs im Fine-Pitch oder BGA.
Die uralten RTCs im DIL sind ja am aussterben.

Außerdem haben die meisten RTCs so ein crudes Dezimalformat.
Ich programmiere meine internen RTCs immer als 32Bit Sekunden. Damit 
kann man ganz leicht Zeiten vergleichen oder Zeitabstände messen.
Nur für Ein-/Ausgabe für den Menschen braucht man 2 
Umwandlungsfunktionen.

von Joachim B. (jar)


Lesenswert?

Axel Schwenke schrieb:
> Zum einen stimmt es nicht, daß eine RTC "kaum mehr kostet" als ein
> Uhrenquarz. Vor allem schon deswegen nicht, weil die meisten RTC
> erfordern, einen externen Uhrenquarz anzuschließen. Was dein Argument
> von oben gleich nochmal hinfällig macht.

Beitrag "Re: Sleep Mode Logik Frage"
wie bitte, ich kaufe eine RTC mit DS3231 und du schreibst von Quarz 
anschliessen?

und wo bekommt man hier einen 32 kHz Quarz ins Haus für unter 1,50€ ?

jaja ist klar, ich schreibe falsch und du wahr, nun
los Butter bei die Fische:

32kHz Quarz ins Haus unter 1,50€

gibts auch als nackten Chip, aber der ist hier teurer
DS3231 ins Haus unter 1,50€

offensichtlich kennst du den DS3231 nicht mal, sonst würdest du sowas 
nicht schreiben.

Axel Schwenke schrieb:
> Nutzen sich bei deinen µC die Interrupts ab? Oder bekommst du Geld
> zurück, wenn dein µC länger schläft?
> Deine Argumente sind so armselig

wie du meinst, mir ist es egal wenn dein AVR jedesmal aufwacht um eine 
Sekunde zu zählen, jeder wie er mag.

Axel Schwenke schrieb:
> Deine Argumente sind so armselig und an den Haaren herbeigezogen, daß
> ich mich frage ob du nicht bloß gegen mich stänkern wolltest.

das frage ich mich auch

du meinst also an einen DS3231 einen Quarz anlöten zu müssen?
du meinst also 1000x den AVR zu wecken gibts umsonst aus der Batterie?

Thomas Eckmann schrieb:
> Ich nenne sowas Wurstfingereffekt.

könnten wir ja mal vergleiche, ich lade dich gerne ein.......

ändert aber nix dran das der Quarz filigran ist und gut behütet in der 
Schaltung sitzt, deswegen darf ich den nicht mögen gelle.

Peter Dannegger schrieb:
> Die Metallröhrchen mit 2 Anschlußdrähten sind auch vom ungeübten Bastler
> leicht einzulöten.

darum ging es mir nicht, aber die meisten die hier mitstänkern kennen 
nicht mal die von mir genannte RTC

Axel Schwenke schrieb:
> Und die RTC, die einen Quarz
> eingebaut haben, sind nicht billig, sondern im Gegenteil oft deutlich
> teurer als RTC plus Quarz.

oh ja die hat mich völlig ruiniert Ca. EUR 1,04
http://www.ebay.de/itm/251357891421?clk_rvr_id=795514561958&rmvSB=true

hier die mit Quarz Ca. EUR 1,06 (gibts noch 3 Ct billiger nur wollte ich 
den Quarz zeigen)
http://www.ebay.de/itm/I2C-Tiny-RTC-DS1307-Real-Time-Clock-Module-AT24C32-Board-for-Arduino-AVR-/281541321180?pt=LH_DefaultDomain_0&hash=item418d2ba1dc

es gibt für mich nur ein Argument für den 32 kHz Quarz, Massenfertigung 
und Platz, als Hobbybastler ist mir Platz fast egal.

von Axel S. (a-za-z0-9)


Lesenswert?

Joachim B. schrieb:
> Axel Schwenke schrieb:
>> Zum einen stimmt es nicht, daß eine RTC "kaum mehr kostet" als ein
>> Uhrenquarz. Vor allem schon deswegen nicht, weil die meisten RTC
>> erfordern, einen externen Uhrenquarz anzuschließen. Was dein Argument
>> von oben gleich nochmal hinfällig macht.
>
> wie bitte, ich kaufe eine RTC mit DS3231 und du schreibst von Quarz
> anschliessen?

Das mit dem Lesen mußt du noch üben. Ich schrieb nirgendwo, daß man an 
jede RTC einen externen Quarz anschließen muß.

> und wo bekommt man hier einen 32 kHz Quarz ins Haus für unter 1,50€ ?

Reichelt, Artikel "0,032768" für EUR 0,12. Dazu MCP7940 für EUR 0,88. In 
Summe also EUR 1,00. Wohlgemerkt Endkundenpreis für Einzelstücke.

Den DS3231 gibt es gar nicht bei Reichelt. Bei Mouser als Einzelstück 
für EUR 7,31. Tolle Ersparnis.


> DS3231 ins Haus unter 1,50€

Anscheinend ein ebay "Schnäppchen". Ist niemals ein Original. 
Datenhaltigkeit fraglich. Lieferzeit unterirdisch. Langfristige 
Verfügbarkeit nicht gegeben.

>> Deine Argumente sind so armselig und an den Haaren herbeigezogen, daß
>> ich mich frage ob du nicht bloß gegen mich stänkern wolltest.

> du meinst also 1000x den AVR zu wecken gibts umsonst aus der Batterie?

Nein, sondern ich schrieb:
> Was davon den wenigsten Strom verbraucht, muß man mal mit spitzem Stift
> durchrechnen. Das "aufwachen und den Software-Zähler eins hochzählen"
> verbraucht allerdings viel weniger Energie als man gemeinhin annimmt.

Aber weil es so schön ist, hier mal als Überschlagsrechnung. Der µC möge 
alle 8 Sekunden aufwachen und eine 32-Bit Variable dekrementieren. Für 
den Interrupt mit allem pipapo braucht er dann wie lange? Sagen wir mal 
großzügig 80 Taktzyklen. Bei 1MHz Systemtakt sind das 80µs. Alle 8 
Sekunden. Also ein 100.000-stel der Maschinenzeit. Bei 1Mhz Takt braucht 
der µC wieviel Strom? Sagen wir großzügig 1mA (ATmega88PA: max 0.55mA). 
Der mittlere Stromverbrauch durch die Realtime-ISR ist dann 1mA/100.000. 
Also 10nA. Zum Vergleich: im Power-Save mit aktiviertem 32kHz Oszillator 
braucht der ATmega88PA permanent ca. 900nA.

Dein heißgeliebter DS3231 genehmigt sich im Standby 130µA wenn er 
regulär versorgt wird. Oder 2µA wenn er aus der Batterie läuft. Das 
Original von Maxim wohlgemerkt. Für das was die Chinesen da verkloppen 
wird wohl niemand seine Hand ins Feuer legen.

von Ja (Gast)


Lesenswert?

Ich melde mich mal wieder, ist ja genial was hier veranstaltet wird :-)
Also: ich benötige eine Art Uhr, die auf 5 Stunden durchaus Toleranz von 
mehreren Minuten haben darf. Deshalb auch "Art Uhr", da sie durchaus 
ungenau sein darf.
Habe ich es nun richtig verstanden , dass es am effektivsten ist, den 
Watchdog einen Zähler hochzählen zu lassen, bis die entsprechenden Werte 
erreicht sind?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ja schrieb:
> Habe ich es nun richtig verstanden , dass es am effektivsten ist, den
> Watchdog einen Zähler hochzählen zu lassen, bis die entsprechenden Werte
> erreicht sind?

Hmm, der Watchdog ist nun wirklich sehr ungenau und ausserdem noch 
temperaturabhängig. Ob die gelieferte Genauigkeit reicht, solltest du 
einfach mal testen. Wenn du so etwas noch rumliegen hast, kannst du auch 
die Platine eines alten Quarzuhrwerkes nehmen und mit dem Signal für den 
Schrittmagneten den MC aufwecken. Aber probier ruhig erstmal den WD.

von Joachim B. (jar)


Lesenswert?

Axel Schwenke schrieb:
> Anscheinend ein ebay "Schnäppchen". Ist niemals ein Original.

ach und das weisst du genau? woher?

Axel Schwenke schrieb:
> Das mit dem Lesen mußt du noch üben.

danke gebe ich gerne zurück:
Joachim B. schrieb:
> und wo bekommt man hier einen 32 kHz Quarz ins Haus für unter 1,50€ ?

ergo passt deine Antwort wohl nicht

Axel Schwenke schrieb:
> Reichelt, Artikel "0,032768" für EUR 0,12.

ach und Reichelt versendet umsont?
was kostet der bis er bei mir ist? (immer diese Milchmädchenrechnungen)

ich will dir nix böses, wir haben halt unterschiedliche Meinungen, aber 
deswegen mir das Wort im Munde umdrehen nur das du Recht behälts ist 
kein guter Stil.

Axel Schwenke schrieb:
> Der µC möge
> alle 8 Sekunden aufwachen und eine 32-Bit Variable dekrementieren.

welche Uhr tickt im 8s Takt?

ich glaube doch eher der muss jede Sekunde aufwachen um ein Sekunde zu 
inkrementieren.

Axel Schwenke schrieb:
> Bei 1Mhz Takt braucht

und bei 128kHz noch weniger......

mir scheint diese Diskusion ist sinnlos duch schönrechnen und 
tricksen....

Ja schrieb:
> Deshalb auch "Art Uhr", da sie durchaus
> ungenau sein darf.
> Habe ich es nun richtig verstanden , dass es am effektivsten ist, den
> Watchdog einen Zähler hochzählen zu lassen, bis die entsprechenden Werte
> erreicht sind?

ich denke ja, das dürfte dir reichen.

von Thomas E. (thomase)


Lesenswert?

Ja schrieb:
> Habe ich es nun richtig verstanden , dass es am effektivsten ist, den
> Watchdog einen Zähler hochzählen zu lassen, bis die entsprechenden Werte
> erreicht sind?

Ja, das ist einfach.

Aber nicht mit dem Watchdog-Reset, sondern mit dem 
Watchdog-Timer-Interrupt. Das können die meisten AVR. Die Genauigkeit 
ist allerdings, wie schon gesagt, bescheiden.

Mit einem Atmega8 geht das selbstverständlich nicht.

mfg.

von Ja (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Mit einem Atmega8 geht das selbstverständlich nicht.

Okay warum?

von Thomas E. (thomase)


Lesenswert?

Ja schrieb:
> Okay warum?

Weil die alte Gurke keinen Watchdog-Interrupt hat.

Bei dem müsstest du das Zählergebnis im EEPROM ablegen, sonst fängst du 
nach jedem Reset wieder von vorne an zu zählen.

Bei anderen AVRs, z.B. ATtiny13, kannst du statt des WD-Reset auch einen 
Interrupt ausführen lassen und in der ISR deinen Zähler hochzählen. Wenn 
es auch ein bisschen ungenauer sein darf, ist das durchaus eine elegante 
Lösung, die ausschliesslich mit Boardmitteln des Controllers auskommt.

mfg.

: Bearbeitet durch User
von Lutz (Gast)


Lesenswert?

Joachim B. schrieb:
> welche Uhr tickt im 8s Takt?
>
> ich glaube doch eher der muss jede Sekunde aufwachen um ein Sekunde zu
> inkrementieren.

Hm. 5 Stunden = 18.000 Sekunden. Geteilt durch 8 = 2.250. Geht sogar 
genau auf, obwohl dies bei der geforderten Genauigkeit ja auch egal ist.

Kommt mal alle wieder runter. Es kommt wie immer auf den konkreten 
Anwendungsfall an, welche Hard- und Software man nimmt (genauer: 
Braucht).

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.