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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.