Forum: Mikrocontroller und Digitale Elektronik ATmega4809 Interner 32khz Oszillator und sleep


von Linus Miller (Gast)


Lesenswert?

Guten Tag,

ich möchte mit dem ATmega4809 eine Halbwegs genaue Uhr bauen. Dazu 
ermittle ich die Abweichung auf 24h und ziehe dann dementsprechend ab. 
Ich nutze den Internen 32khz Oszillator und den RTC Timer. Ansich passt 
das auch soweit, dass Problem ist nun aber wenn ich den Controller in 
den Power Save Modus schicke ist die Abweichung extrem schlechter als 
ohne den Power Save Modus. Woran liegt das?

Ich habe den Oszillator so Konfiguriert dass der Oszillator auch im 
Sleep aktiv ist.
1
_PROTECTED_WRITE(CLKCTRL_OSC32KCTRLA, CLKCTRL_RUNSTDBY_bm); //Run Standby Internal 32khz Resonator  
2
  set_sleep_mode(SLEEP_MODE_STANDBY);
3
  
4
  RTC.CLKSEL = RTC_CLKSEL_INT32K_gc;
5
  RTC.CTRLA = RTC_PRESCALER_DIV32768_gc | RTC_RTCEN_bm | (1<<2) | RTC_RUNSTDBY_bm; //Modul on (1<<2 = Calibration enabled)
6
  while (RTC.STATUS > 0); //Wait inizialision
7
  RTC.INTCTRL |= RTC_OVF_bm; //Overflow Interrupt Enable
8
  RTC.PER = 0; //Overflow Value // every second

In der Interrupt Rotine wird eine einfache Variable Hochgezählt, die 
dann in der Hauptschleife ausgewertet wird.
1
volatile uint8_t FLAG_WDT = 0;
2
volatile uint32_t xx = 0;
3
4
ISR(RTC_CNT_vect)
5
{
6
  RTC.INTFLAGS = RTC_OVF_bm;
7
  FLAG_WDT = 1;
8
  xx++;
9
}

BG
LMiller

von m.n. (Gast)


Lesenswert?

Linus Miller schrieb:
> ich möchte mit dem ATmega4809 eine Halbwegs genaue Uhr bauen. Dazu
> ermittle ich die Abweichung auf 24h und ziehe dann dementsprechend ab.
> Ich nutze den Internen 32khz Oszillator und den RTC Timer.

Vergiss es! Der interne RC-Oszillator ist so ungebau, daß von einer Uhr 
(als Zeitmesser) keine Rede mehr sein kann.
15 Minuten Abweichung/Tag sind locker möglich.

von Linus Miller (Gast)


Lesenswert?

m.n. schrieb:
> Vergiss es!

ok aber weißt du warum der sleep modus noch mehr Abweichung ausmacht?
Der Oszillator schwingt ja weiterhin.

BG
LMiller

von S. Landolt (Gast)


Lesenswert?

Ich sehe hier keinen Unterschied, ob mit oder ohne sleep.
Bei 5.0 V beträgt die Abweichung -2.5 %, bei 3.0 V sind es -0.2 %.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Linus Miller schrieb:
> ok aber weißt du warum der sleep modus noch mehr Abweichung ausmacht?
Wieviel macht das denn aus?
Ändert sich die Betriebsspannung durch den Sleep-Modus?

von Linus Miller (Gast)


Lesenswert?

Lothar M. schrieb:
> Wieviel macht das denn aus?

Mit Sleep Modus auf 2h -> 20 Sekunden vorwärts
Ohne Sleep Modus auf 2h-> 1 Sekunde vorwärts

Lothar M. schrieb:
> Ändert sich die Betriebsspannung durch den Sleep-Modus?

Die Spannung kommt von einem PC über USB also 5V (500mA max. belastbar).
Habe zur Sicherheit einen Kondensator mit 100µF Parallelgeschlossen.

von m.n. (Gast)


Lesenswert?

Linus Miller schrieb:
> Mit Sleep Modus auf 2h -> 20 Sekunden vorwärts

Das sind rund 0,3%. Sieht man sich die Kurven im Datenblatt an, so kann 
diese Abweichung schon durch die interne Temperaturveränderung des Chips 
bei veränderter Stromaufnahme stattfinden.
Nimm einen Quarz, alles andere ist Zeitverschwendung.

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
Noch kein Account? Hier anmelden.