Moin, ich bin auf der Suche nach einer Möglichkeit, einen AVR Atmega8 einmal jede Woche zu einem definiertem Zeitpunkt aufwachen zu lassen, damit dieser einige Werte aufnehmen und auswerten kann. Ich habe bereits gelesen, dass dieses mit dem Power Save Modus und einem externen Uhrenquarz gemacht werden kann, wenn bei jedem wachwerden immer eine Variable hochgezählt wird. Die anwendung, bei der ich es allerdings benötige wird mit Batterien betrieben und die restliche hardware benötigt im Moment bereits im Power Down Modus ca. 300mikro Ampere. Gibts es noch andere Möglichkeiten, den Controller jede Woche einmalig wachzubekommen? Schon mal im Vorraus Danke
Thorsten schrieb: > Die anwendung, bei der ich es allerdings benötige wird mit Batterien > betrieben und die restliche hardware benötigt im Moment bereits im Power > Down Modus ca. 300mikro Ampere. Dann kommt es doch auf die paar µAs für das regelmäßige Aufwachen des µC zum Hochzählen seiner Zählvariablen wirklich nicht drauf an.
@ Thorsten (Gast) >ich bin auf der Suche nach einer Möglichkeit, einen AVR Atmega8 einmal >jede Woche zu einem definiertem Zeitpunkt aufwachen zu lassen, damit >dieser einige Werte aufnehmen und auswerten kann. Direkt geht das nicht, dazu sind die Zähler zu klein. Aber alle paar Sekunden geht. >Ich habe bereits gelesen, dass dieses mit dem Power Save Modus und einem >externen Uhrenquarz gemacht werden kann, wenn bei jedem wachwerden immer >eine Variable hochgezählt wird. Genau, siehe Sleep Mode. >Die anwendung, bei der ich es allerdings benötige wird mit Batterien >betrieben und die restliche hardware benötigt im Moment bereits im Power >Down Modus ca. 300mikro Ampere. Je nach AVR-Typ um die 5uA, das fällt bei ohnehin benötigten 300uA also nicht ins Gewicht. >Gibts es noch andere Möglichkeiten, den Controller jede Woche einmalig >wachzubekommen? Auch wenn er alle paar Sekunden aufwacht und sich gleich wieder schlafen legt, ist der Stromverbrauch sehr gering.
:
Bearbeitet durch User
Falk Brunner schrieb: > Direkt geht das nicht, dazu sind die Zähler zu klein. Aber alle paar > Sekunden geht. Man kann ja eine 32-bit Variable als Zähler verwenden: Das vom Timer ausgelöste wake-up zählt die Variable hoch und prüft den erreichten Wert. Danach geht der Kontroller meist gleich wieder in Ruhe. Erst wenn die Variable den Sollstand erreicht hat, wird mit der "aufwach"-Routine begonnen. Da kann man Jahrzehnte an sleep-Zeit erreichen
Auch ich halte die Anforderung für wenig sinnvoll bei den gegebenen Stromverhältnissen. Wenn es denn aber sein muss/soll, vielleicht hilft Folgendes: http://www.atmel.com/images/doc1268.pdf
Hier zwei Beispielprogramme. Das untere benutzt einen Uhrenquarz. http://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC Übrigens, normalerweise schaltet man da die restliche Hardware ab. Stromversorgung über Portpin oder P-Kanal Mosfet. Auch wenn es hier verpönt ist, Einige Pics haben ein RTCC Modul, Der Uhrenqartz zählt selbsttändig einen Kalender hoch, weckt den Controller erst am eingestellten Datum.
oder das aufwecken von einer RTC mit DS3231 machen lassen per Alarm aus der RTC und Int an den Atmel, dann darf der auch eine Woche tief schlafen und muss nie die Zeit zählen.
Warum die Leute immer nur die alten AVRs verwenden? Ein Mega88PA ist stromsparender, zum Teil, weil er in einem neueren Halbleiterprozess gefertigt wird, zum Teil, weil er einfach mehr Möglichkeiten bietet. Das zum ersten. Zu Deinem Problem: Du könntest überlegen, ob eine externe RTC wie zB MCP79410 oder DS3231 nicht Deine restliche Hardware per Alarm anschalten kann. Wenn die Aufgabe erledigt ist, schaltet sich der AVR mit einer Portleitung wieder selber aus. So ist die Woche über die gesamte Schaltung mit Ausnahme der Uhr AUS und verbraucht gar nichts. Die Uhr wird über eine Lithium-Batterie (zB CR2032) versorgt, die normalerweise für 10 Jahre reicht. fchk
Danke für die vielen und hilfreichen Antworten. Das mit der externen Hardware abschalten geht nicht so einfach, da an dem Interruptpin ein Sensor hängt, welcher bei Auslösen den Controller ebenfalls aufweckt und die werte weggespeichert werden. Deshalb kann diese Hardware nicht abgeschaltet werden. Ich werde das dann doch zuerst mit dem Power Save Modus probieren und eine Variable alle 8s hochzählen. Falls dieses doch nciht meinen Erwartungen entspricht, werde ich es mit einem externen RTC probieren.
Der PCF2123 ist eine sehr sparsame RTCC. Ansprechbar über SPI und als Alarmgeber programmierbar. Damit lassen sich auch größere Zeiträume sehr komfortabel einstellen.
Wie schon gesagt - man muss das Gesamtkonzept sehen. Werden eh dauerhaft 300µA gebraucht, muss man nicht mehr ums letzte µA feilschen. Ansonsten würde ich auch ne RTC vorschlagen (M41T81), läuft mit 0,5µA und man kann den Alarm programmieren, auch über mehrere Tage. RTC-Interrupt weckt den MC, paar Sachen machen, neue Alarmzeit schreiben, schlafen legen.
Den ersten Teil von Frank Ks Beitrag betonend: ein ATmega328P mit Quarz 32 kiHz und asynchronem Timer2 benötigt bei 3.0 V gerade mal 1.0 µA, da ist der Aufwand für eine externe RTC sorgfältig abzuwägen. Mein Tipp von weiter oben ist mindestens genauso veraltet wie der ATmega8, Atmel sollte in der Dokumentation mal etwas aufräumen.
Der alte Hanns beklagte: >Mein Tipp von weiter oben ist mindestens genauso veraltet wie der >ATmega8, Atmel sollte in der Dokumentation mal etwas aufräumen. In alten Gesangbüchern stehen auch schöne Lieder.... ;-) MfG Paul
Eine externe RTC, mit I²C (0,4µA), die via Interrupt und FET den Rechner aufweckt.
Amateur schrieb: > die via Interrupt und FET den Rechner wozu den FET ? der alte Hanns schrieb: > ein ATmega328P mit Quarz > 32 kiHz und asynchronem Timer2 benötigt bei 3.0 V gerade mal 1.0 µA, da > ist der Aufwand für eine externe RTC sorgfältig abzuwägen. ja klar, der Quarz muss auch bestückt werden, da lobe ich mir die RTC mit DS3231, ist eine Platz, Geld oder Entwicklungsfrage. Ich stöpsel lieber einen fertigen Arduino an eine fertige RTC mit Platine, aber wer selber die Platine entwirft hat u.U. Bauteilbeschaffungsprobleme oder Bestückprobleme. Hier ist ein einzelner DS3231 jedenfalls teurer als ein Fertigmodul aus China mit LR Batterie Halter und Ladeteil auf Platine.
Wenn ein Mikrokontroller schläft - und nichts mehr schnallt - kann er auch richtig abgeschaltet werden. Also rund 0 Ampere Stromaufnahme. Dafür kann ein FET, der über den Interruptausgang geschaltet wird, nicht schaden. Schau hierzu mal bei NXP nach (PCF8563). Natürlich kannst Du den µC auch über einen NMI aufwecken. Dazu braucht dieser aber auch dauerhaft ein bissel Strom.
apropos Quarz. Beim PCF8563 (32 KHz) wird der Tackt nach außen geführt. Es müsste also möglich sein diesen Pin mit dem Takteingang des µC zu verbinden. Spart notfalls dessen Quarz.
Amateur schrieb: > Wenn ein Mikrokontroller schläft - und nichts mehr schnallt - kann er > auch richtig abgeschaltet werden. Vielleicht erst mal lesen vor dem Schreiben? Der TE will den µC auch per Interrupt vom Sensor aufwecken lassen können: Thorsten schrieb: > abschalten geht nicht so einfach, da an > dem Interruptpin ein Sensor hängt, welcher bei Auslösen den Controller > ebenfalls aufweckt und die werte weggespeichert werden. Sleepmodus ist genau richtig. Und der extra Strombedarf für den 32kHz Oszillator und den daraus abgeleiteten Timekeeper-Interrupt ist nun wirklich Pillepalle angesichts der angegebenen 300µA Strombedarf zusätzlich zu dem des µC. Die vielen Vorschläge mit immer noch stromsparenderen RTC sind nix als virtuelle Schwanzvergleiche.
@Axel >Vielleicht erst mal lesen vor dem Schreiben? Der TE will den µC auch >per Interrupt vom Sensor aufwecken lassen können: Da ist was dran! Im dritten Absatz habe ich genau auf diese Möglichkeit hingewiesen. Also: Bestimmt mal vor dem Schreiben, lesen. Zumindest nicht so selektiv.
Axel Schwenke schrieb: > Die vielen Vorschläge mit immer noch stromsparenderen RTC sind nix als > virtuelle Schwanzvergleiche. und warum mischst du dann genauso mit ? weil du besser programmieren kannst ? mir liegt eher Hardware, ich koppel die RTC mit ihrem Alarmausgang auf einen INT und muss mich um den 32kHz sleep Timerkram nicht kümmern! du vergleichst ja auch Schwänze wenn du deine Lösung als einzig richtige hinstellst.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.