ATmega4809 Interner 32khz Oszillator und sleep

Gast #6880709
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
Gast #6880732
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.
Gast #6881007
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren