Forum: Mikrocontroller und Digitale Elektronik ATMega328p: Zwei Takte, eine Uhrzeit


von Harald (Gast)


Lesenswert?

Eine ATMega328p läuft mit 2 Takten. Während der Wachphase (5 ms - 10 ms) 
sind es 16 MHz und während der Schlafphase (4 s - Wachppase) sind es 
16/256 MHz.

Wie kann ich geschickt die Uhrzeit (hh:mm) mitlaufen lassen, ohne durch 
die beiden Takte mir eine zu große Abweichung einzufangen? Eine 
Abweichung von max. 60 Sekunden pro Monat möchte ich erreichen.

von Rolf M. (rmagnus)


Lesenswert?

Am einfachsten, indem du deine Uhr über Timer 2 mit einem Uhrenquarz 
umsetzt. Dann bist du komplett unabhängig vom Takt des Kerns.

von STK500-Besitzer (Gast)


Lesenswert?

Da der ATmega keine RTC mit eigenem Quarz besitzer, muss deine 
Uhrenfunktion halt merken, in welcher Phase sich der Controller 
befindet, und die mit dem entsprechenden Multiplikator aufsummieren (1 
oder 16).

von Mario M. (thelonging)


Lesenswert?

Nimm ein externes RTC-Modul, z.B. mit DS3231. Damit sind ohne Kopfstände 
weniger als 10s Abweichung pro Monat möglich. Alternativ den ATMega mit 
RC-Oszillator betreiben und wie von Rolf beschrieben den Uhrenquarz an 
TOSC1/2 über Timer 2 laufen lassen. Aber selbst da sind die 60s pro 
Monat nur knapp zu erreichen.

von Harald (Gast)


Lesenswert?

Der ATMega328p ist komplett belegt, so dass ich auf einen Softwarelösung 
setzen muss. Habe gedacht, dass der ein oder andere dies schon einmal 
gelöst hat und mir einen Tipp (siehe z. B. STK500-Besitzer) geben kann.

von STK500-Besitzer (Gast)


Lesenswert?

Harald schrieb:
> Habe gedacht, dass der ein oder andere dies schon einmal
> gelöst hat und mir einen Tipp (siehe z. B. STK500-Besitzer) geben kann.

Nee, habe ich noch nie (gebraucht).
Du hast aber deine Frage sehr allgemein gestellt.

Harald schrieb:
> Wie kann ich geschickt die Uhrzeit (hh:mm) mitlaufen lassen, ohne durch
> die beiden Takte mir eine zu große Abweichung einzufangen? Eine
> Abweichung von max. 60 Sekunden pro Monat möchte ich erreichen.

Du hast die Uhr noch nicht, oder?
Wie realisierst du denn die Schlaf- und Weckzeiten?

Grundsätzlich sollte man eine Uhr mit Hilfe eines Timers realisieren, 
der von einem Quarz "angetrieben" wird.

von Stefan F. (Gast)


Lesenswert?

Wenn du den Systemtakt auf 1/256 reduzierst, muss der Timer (relativ 
dazu) 256 mal schneller laufen. Was ist daran kompliziert?

von Einer K. (Gast)


Lesenswert?

Harald schrieb:
> Der ATMega328p ist komplett belegt, so dass ich auf einen Softwarelösung
> setzen muss.
Warum diese Festlegung?

1. Dennoch kannst du den 16MHz Quarz gegen einen Uhrenquarz tauschen.

2. Auch kannst du den Quarz ganz weg machen und an den Oszilatorpins 
eine RTC betreiben. Per SoftI2c.

von Joachim B. (jar)


Lesenswert?

Harald schrieb:
> Der ATMega328p ist komplett belegt, so dass ich auf einen Softwarelösung
> setzen muss

i2c RTC DS3231 + i2c Portexpander PCF8574(a) löst das Problem auch

und geweckt von der RTC
Harald schrieb:
> während der Schlafphase (4 s - Wachppase) sind es
> 16/256 MHz.

kann er sogar tiefer schlafen, bzw. in den power off gehen

: Bearbeitet durch User
von Harald (Gast)


Lesenswert?

@STK500-Besitzer

Wie realisierst du denn die Schlaf- und Weckzeiten?

1
1 Takt/256
2
2 delay f. 3990 ms
3
3 Takt/1
4
4 Arbeiten für 5 bis 10 ms
5
5 weiter bei 1


@Stefan

> Wenn du den Systemtakt auf 1/256 reduzierst, muss der Timer (relativ
> dazu) 256 mal schneller laufen. Was ist daran kompliziert?

Das ist leicht gesagt - schwer getan (für mich).

Wie dem auch sei, morgen werde ich mich an einer Routine versuchen.

von Peter D. (peda)


Lesenswert?

Wenn Dir 8MHz CPU-Takt vom internen RC reichen, dann ist ein Uhrenquarz 
an T2 zu überlegen.

Eine Umschaltung sollte gehen, wenn man sie mit dem Überlauf des Timers 
synchronisiert. Im Datenblatt steht leider nirgends, ob der 
CPU-Prescaler beim Umschalten resettet wird oder nicht.

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.