Hallo!
Mache mir gerade Gedanken zum Thema Stombedarf minnimieren:
Gegeben ist ein ATmega324PA ohne Hauptquarz (läuft mit intern RC 8MHz) allerdings mit 32,768kHz Uhrenqarz an Timer2.
Grob angeplant ist:
Alles anzeigen
Gedacht ist es, das der µC die meißte Zeit im Powersave-Mode (alles aus, ausser Timer2 als RTC) liegt.
Jede Sekunde soll in der Sectic geschat werden ob die Zeit für eine bestimmte Aufgabe gekommen ist, und entsprechend ein Aufgabenbyte setzen.
Nach verlassen der Sectic soll die Do-Loop-Schleife ein mal durchlaufen werden, um zu prüfen ob eine Aufgabe ansteht.
Danach soll wieder in den Powersave-Mode gewechselt werden.
Das Datenblatt spricht davon das dass Programm nach dem Aufwachen unmittelbar hinter dem letzten Sleep-Befehl fortgesetzt wird.
Das wäre dann oben das Return in Zeile 41, welches zurück in die Do-Loop-Schleife führt.
Aufgrund Zeile 1 wird aber die Sectic angesprungen.
Wohin führt dann das Return in Zeile 22?
Zum Return in Zeile 44, oder in die Hauptschleife, oder irgendwo anders hin?
Und by the Way noch was:
Wenn ich das Datenblatt richtig verstehe könnte ich mir mit TIMER2_COMPA / COMPB zusätzliche Interrupts zwischen den vollen Sekunden basteln, qausi auf 3,9ms Auflösung. Funktioniert das bei Verwendung des Timer2 als asnchrone RTC oder taugt das nur für PWM-Anwendungen?
Grüße
Jürgen
Mache mir gerade Gedanken zum Thema Stombedarf minnimieren:
Gegeben ist ein ATmega324PA ohne Hauptquarz (läuft mit intern RC 8MHz) allerdings mit 32,768kHz Uhrenqarz an Timer2.
Grob angeplant ist:
BASCOM-Quellcode
- Config Clock = Soft , Gosub = Sectic
- Enable Interrupts
- Do
- Select Case Aufgabe
- Case = 1 : Gosub Aufgabe1
- Case = 2 : Gosub Aufgabe2
- Case = 3 : Gosub Aufgabe3
- end select
- Gosub schlafen
- loop
- Sectic:
- If _sec = 5 then Aufgabe = 1 , end If
- If _sec = 10 then Aufgabe = 2 , end If
- If _sec = 45 then Aufgabe = 3 , end If
- Return
- Aufgabe1:
- 'Meßbefehle absenden
- Aufgabe = 0
- Return
- Aufgabe2:
- 'Meßwerte einlesen und formatieren
- Aufgabe = 0
- Return
- Aufgabe3:
- 'Datensatz versenden
- Aufgabe = 0
- Return
- Schlafen:
- 'Externe Geräte in Sleepmode setzen.
- 'µC in Sleepmode setzen
- Config Powermode = Powersave
- Return
Gedacht ist es, das der µC die meißte Zeit im Powersave-Mode (alles aus, ausser Timer2 als RTC) liegt.
Jede Sekunde soll in der Sectic geschat werden ob die Zeit für eine bestimmte Aufgabe gekommen ist, und entsprechend ein Aufgabenbyte setzen.
Nach verlassen der Sectic soll die Do-Loop-Schleife ein mal durchlaufen werden, um zu prüfen ob eine Aufgabe ansteht.
Danach soll wieder in den Powersave-Mode gewechselt werden.
Das Datenblatt spricht davon das dass Programm nach dem Aufwachen unmittelbar hinter dem letzten Sleep-Befehl fortgesetzt wird.
Das wäre dann oben das Return in Zeile 41, welches zurück in die Do-Loop-Schleife führt.
Aufgrund Zeile 1 wird aber die Sectic angesprungen.
Wohin führt dann das Return in Zeile 22?
Zum Return in Zeile 44, oder in die Hauptschleife, oder irgendwo anders hin?
Und by the Way noch was:
Wenn ich das Datenblatt richtig verstehe könnte ich mir mit TIMER2_COMPA / COMPB zusätzliche Interrupts zwischen den vollen Sekunden basteln, qausi auf 3,9ms Auflösung. Funktioniert das bei Verwendung des Timer2 als asnchrone RTC oder taugt das nur für PWM-Anwendungen?
Grüße
Jürgen