Liebe Community, ich bräuchte von euch einen kurzen Denkanstoß. Ich arbeite mit einem attiny2313. Funktion soll sein, mittels Softwareabfrage einer Schalterstellung an dem µC entweder alle 24h, alle 48h oder alle 72h eine kurze Aktion auszuführen und dann wieder schlafen zu gehen, da die gesamte Schaltung Batteriebetrieben ist. Ich bin mit den AVRs noch etwas unerfahren und habe ziemlich viel gelesen, gesucht und noch mehr gelesen die letzten Tage. Letztendlich bin ich verwirrter als vorher =) Meine Recherchen ergaben (bitte korrigieren wenn falsch), das bis auf den Idle Mode alle anderen Stromsparmodi eine Hardwareseitige Reaktivierung brauchen. Somit wäre für mich der Idle Modus aktuell, welchen ich mit MCUCR = 0x00 einstellen kann. Nun verwirren mich aber 3 Dinge: - Geht wirklich nur der idle Modus oder ginge mittels Watchdog Timer auch ein PowerDown Modi, bis der Watchdog einen Reboot erzwingt? - Welche Interrupt Service Routine benötige ich zum aufwecken des µC, bzw sind die Interrupts zum aufwecken und für den Counter verschieden? - Sind mittels Counter solche "langen" Zeiten bis zur Interuptausführung überhaupt möglich? Bin über jede Hilfe dankbar! Gruß Sanja
Sanja schrieb: > ich bräuchte von euch einen kurzen Denkanstoß. Ich arbeite mit einem > attiny2313. Schlechte Wahl für die Aufgabenstellung. Gab's einen besonderen Grund für diese Wahl? > - Geht wirklich nur der idle Modus oder ginge mittels Watchdog Timer > auch ein PowerDown Modi, bis der Watchdog einen Reboot erzwingt? Watchdog geht natürlich auch, du musst dann das watchdog reset flag (WDRF) auswerten. Lässt sich sogar noch einfacher implementieren, da der watchdog alternativ auch einen Interrupt auslösen kann, man muss also nicht einmal zwingend über reset gehen. Allerdings ist der watchdog oscillator ein RC-Oszillator simpelster Sorte. Für ein auch nur halbwegs brauchbares Timing würde ich mich auf den nicht verlassen. Wenn du den Haupttakt (RC-Oszillator oder Quarz?) durch 256 teilst, bevor du in den idle sleep gehst, braucht du ungefähr die gleiche Größenordnung an Strom (wenige 10 µA) wie mit dem watchdog oscillator. > - Welche Interrupt Service Routine benötige ich zum aufwecken des µC Irgendeine, also zweckmäßig die eines Timers (watchdog oder normaler). Jeder freigeschaltete Interrupt, der entsprechend des sleep mode auch wirklich noch kommen kann, weckt den Prozessor auf. > - Sind mittels Counter solche "langen" Zeiten bis zur > Interuptausführung überhaupt möglich? Nein, natürlich nicht, aber das hättest du dir selbst ausrechnen können. ;-) Man erweitert den Zählumfang der Timer einfach in Software, d. h. du zählst nur eine Variable runter, und wenn diese noch nicht 0 ist, legst du das alles wieder schlafen. Eine bessere Wahl wäre ein Controller gewesen, bei dem man den Timer 2 separat von einem 32-kHz-Uhrenquarz takten kann. Bei diesen gibt's einen sogenannten power-save sleep mode, bei dem alle Takte außer diesem abgeschaltet werden. Damit hast du Timing in Quarzuhrenqualität bei Stromverbrauch im unteren µA-Bereich. Wenn mich nicht alles täuscht ist der kleinste AVR, der diese Möglichkeit bietet, ein ATmega48.
Vielen Dank euch beiden. Die Idee mit dem externen Uhrenquarz gefällt mir sehr gut. Muss ich mal schauen wie man das am besten realisiert und damit Aufweckzeiten konfiguriert
Man könnte auch einen RTC an den AVR hängen. Am besten einen mit Alarmfunktion über die der AVR aufgeweckt wird, z.B. DS1337 oder PCF8583. Dann kann der AVR tiefer schlafen und die Teile brauchen auch nur wenige µA.
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.