Hi @all, Umgebung: ATmega88V mit 2 MHz ext. Crystal Osc. Ich moechte meinen mega88 alle 1 ms bzw. 250 µs aus dem Power Save Mode aufwecken. Um das ganze zu realisieren hab ich Timer2 entsprechende konfiguriert und schalte fuer die unterschiedlichen Zeiten einfach OCR2A um (Timer im CTC Mode, Prescaler 64, -> ~1 ms OCR2A = 0x1F, ~250µs OCR2A = 0x07, ISR ist da und enabled). Ohne Sleep und im IDLE Mode funktioniert alles wie geplant. Um allerdings aus dem Power Save Mode ueber Timer2 aufzuwachen muesste ich meinen Timer asynchron machen. Wie geht das? Funktioniert das ueberhaupt mit meinem 2 MHz Crystal oder muss das der beschriebene 32,xx kHz Quarz sein? Wenn nein wie kann ich meine WakeUp Zeiten aus dem Power Save sonst realisieren? Bin fuer jeden Tipp dankbar ... Gruß Uwe
Asynchron läuft der Timer2 meines Wissens nur mit dem 32...kHz Quarz...
... hab ich fast befuerchtet ... gibt es denn sonst einen Weg meine Wakeup Zeiten zu realisieren? Gruß Uwe P.S.: Nur so als Zusatzinformation wenn ich trotzdem in den Power Save Mode wechsel wache ich trotzdem auf (allerdings sind die Zeiten zu lang =).
Wenn du einen 2MHz Quarz dran hängen hast und diesen Oszillator alle 250µs stillegen willst, dann wird dir die Anschwingzeit des Oszillators einen Strich durch die Rechnung machen. Ein Quarzoszillator benötigt unangenehm lange bis er sauber schwingt. In Frage kommt also allenfalls der Standby-Modus, in dem der Quarzoszillator weiterhin schwingt. Oder du verwendest den internen RC-Oszillator, weil der keine Anschwingzeit hat. Alternative 1 also: Den Haupttakt aus dem internen RC-Oszillator beziehen, einen 32KHz Quarz anschliessen und als asynchronen Taktquelle für den Timer2 verwenden. Exakte Zeiten aus dem 32KHz-Timer ableiten und den RC-Oszillator ggf. über den 32KHz Takt trimmen (siehe Appnote). Achtung aber: Im asynchronen Betrieb hat der Timer bestimmte Randbedingungen, die allzu kurze Aktivzeiten ausschliessen. Da könnte sich ein 250µs Rhythmus möglicherweise als sinnarm erweisen. Alternative 2: Extern einen 4KHz Interrupt erzeugen.
Vielleicht reicht es ja hinsichtlich des Stromverbrauchs auch aus, wenn du auf den Powersave/Standby-Modus verzichtest, den 2MHz Takt per Clock-Prescaler in der Idle-Zeit weit genug runterteilst und im Interrupt zeitweilig wieder hochschaltest.
Hi A.K., erst mal vielen, vielen Dank fuer die Tipps haette alles super funktioniert allerdings bin ich auf den 2 MHz Quarz angewiesen und das CLKOUT des µC geht noch weiter an ein 2tes System das ebenfalls die 2 MHz braucht. Mist, ... ich hab fast befuerchtet, dass das ganze nicht so einfach wird!?! Vielleicht muss ich ja doch nochmal meine HW ueberdenken!? Gruß Uwe
Mach doch erstmal ne Strombilanz: Also wieviel Strom hast Du zur Verfügung, wieviel zieht der AVR, wieviel die andere Schaltung usw.. Dann erst kannst Du überlegen, wie sich was sparen läßt. Vielleicht auch einfach durch Spannung runtersetzen (1,8V). Oder nimm nen extra ATtiny25, der mit 32kHz läuft und den anderen aufweckt. Peter
@ Uwe M. (lifthrasil) >funktioniert allerdings bin ich auf den 2 MHz Quarz angewiesen und das >CLKOUT des µC geht noch weiter an ein 2tes System das ebenfalls die 2 >MHz braucht. Vielleicht Stand By, siehe Sleep Mode. MfG Falk
Mach es doch über den Watchdog. Schau mal ob Du den Power-Down-Mode einsetzen kannst. Der WDT kann den AVR aus dem Power-Down-Mode aufwecken, wobei die Zeit 16ms bis 8sek einstellbar ist. Hat auch den Vorteil eines geringeren Stromverbrauchs.
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.