Hat ein Atmega168 eine RTC on Board?

Gast #3725081
Lesenswert?

Hallo,

kann mir jemand sagen, ob ein Atmega 168 eine Real Time Clock on Board 
hat (Takt läuft auf 8MHz)?

Oder muss man einen Timer laufen lassen, um an eine RTC-Variable zum 
Auslesen zu kommen?

Die RTC, die ich benötige, muss nur über ein paar Stunden auf ca. eine 
Sekunde genau gehen.
#3725130
Lesenswert?

@JörgenWinter:

Eine RTC hat er zwar nicht, man kann aber Timer2 so konfigurieren, daß 
er von einem Uhrenquarz getaktet wird, der Uhrenquarz kommt an die Pins, 
an die sonst ein Quarz für die CPU kommt, das geht also nicht 
gleichzeitig. Ist bei Dir wohl kein Problem, da Du ja wohl den internen 
RC Oszillator benutzt, wenn Du von 8 MHz sprichst. Den Vorteiler von 
Timer2 stellst Du dann so ein, wie es für Dich passend ist, abhängig 
davon, wie fein Du die Zeit auflösen musst. Wenn es nicht zu fein sein 
muss, kann man den Teilerfaktor auf 128 stellen, dann gibt es 1x pro 
Sekunde einen Timerüberlauf. In dem zugehörigen Interrupt kannst Du dann 
die Zeit um eine Sekunde weiterschalten. Da muss man die 'Uhr' halt in 
Software machen, genau ist es aber trotzdem. Der interne RC Oszillator 
ist für eine Uhr in der Regel zu ungenau, selbst wenn man ihn abgleicht, 
läuft er immernoch mit Temperatur und Betriebsspannung weg. Falls Du es 
brauchst, kann man es so machen, das Timer2 zusammen mit dem Uhrenquarz 
auch im Sleep-Mode weiterläuft, und beim nächsten Overflow-Interrupt den 
Controller aufweckt, um in dem Interrupt die Zeit zu aktualisieren. So 
braucht die 'Uhr' nur ein paar Mikroampere.

Mit freundlichem Gruß - Martin
Gast #3725183
Lesenswert?

Lieber Martin,

vielen herzlichen Dank für die ausführliche Erklärung!!!

Jetzt habe ich endlich verstanden, wie es im Datenblatt gemeint ist mit 
dem externen Uhrenquarz.

Mein "Problem" ist, dass der Controller tatsächlich mit einem externen 
8-MHz-Quarz betrieben wird.

Ich brauche eine Art "Marker", um festzustellen, wie viele Minuten seit 
dem Einschalten des Controllers vergangen sind (es müssen maximal 400 
Minuten gezählt werden können, +- 2 Min.).
Dafür müsste ein normaler Timer ausreichen.

Danke noch mal für die Erklärung!!!

Viele Grüße
#3725275
Lesenswert?

Hallo,

ja, das geht natürlich auch, von der Genauigkeit schenkt sich das nicht 
viel. Wenn er nicht schon anderweitig verwendet wird, würde ich da 
Timer1 benutzen, durch die 16 Bit sind die Überläufe nicht so häufig, 
und wenn Du den CTC-Modus verwendest, um den Timer-Endwert so 
festzulegen, daß das Verhältnis zwischen den 8 MHz und der Anzahl 
Timer-Überläufe pro Sekunde nicht so 'krumm' wird, erspart Dir das 
lästige Rechnerei. z.B. Vorteiler auf 1/1024 und Endwert auf 15624 
(Ueberlauf dann alle 15625 Timer-Clocks) ergibt genau alle 2 Sekunden 
einen Timer-Überlauf.

Mit freundlichem Gruß - Martin

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