ATmega4809 Interner 32khz Oszillator und sleep

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

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.