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.
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.
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.
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 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.
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 AVRhttp://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äftJa schrieb:> nach 5 Stunden aufwacht
stellt man den Wecker in der DS3231 auf +5 Stunden und +10s und schickt
den Atmel nach 10s schlafen.
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.
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?
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...
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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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).