Forum: Mikrocontroller und Digitale Elektronik Hat ein Atmega168 eine RTC on Board?


von JörgenWinter (Gast)


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.

von Max H. (hartl192)


Lesenswert?

JörgenWinter schrieb:
> ob ein Atmega 168 eine Real Time Clock on Board
> hat
Wenn im Datenblatt[1] nichts darüber steht, dann nicht.

Der PIC18F46J11[2] hätte eine RTCC integriert.

[1] http://www.atmel.com/images/doc2545.pdf
[2] http://ww1.microchip.com/downloads/en/DeviceDoc/39932D.pdf

: Bearbeitet durch User
von JörgenWinter (Gast)


Lesenswert?

Danke!

von Martin S. (led_martin)


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

von JörgenWinter (Gast)


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

von Sascha W. (sascha-w)


Lesenswert?

JörgenWinter schrieb:

> 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

Ja na klar, und genau ist er mit dem externen Quarz auch noch.

Sascha

von Mike (Gast)


Lesenswert?

JörgenWinter schrieb:
> Die RTC, ... , muss nur über ein paar Stunden auf ca. eine
> Sekunde genau gehen

JörgenWinter schrieb:
> es müssen maximal 400 Minuten gezählt werden können, +- 2 Min.

???

Falls deine erste Anforderung aktuell ist und der Quarz daneben liegt - 
das wird er - kannst du dir hier ein paar Ideen für den Abgleich holen:
Beitrag "Die genaue Sekunde / RTC"

von Martin S. (led_martin)


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

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.