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.
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
@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
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
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
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"
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.