www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Real Time Clock


Autor: Marco G. (marco_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe uC Gemeinde

Weiss jemand wie ich eine RTC in C auf dem uC SAB-C517A mit internem 
2MHz Takt Programmieren kann?

Macht man das mit Timern?

mfg Marco

Autor: Volker Zabe (vza)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine RTC ist ein (spezieller) Timer.

Steht aber alles im Datenblatt.
Aplikations-Quelltexte giebt es auch von den Herstellern.

Gegenfrage: Hast Du dir alle üblichen Quellen angeschaut?

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Realtimeclock hat ueblicherweise einen externen 32kHz Quarz ...

Was soll's denn werden ?

Autor: Marco G. (marco_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ vza
im datanblatt ist unter timer folgendes aufgelistet:

TCON      Timer 0/1 Control Register
TH0       Timer 0, High Byte
TH1       Timer 1, High Byte
TL0       Timer 0, Low Byte
TL1       Timer 1, Low Byte
TMOD      Timer Mode Register

wenn ich das richtig erkannt habe sind das nur Timer 0 und 1

und welche üblichen quellen meinst du? habe noch nie eine RTC 
programmiert.


@ hacky

ich habe vor die RTC über RS232 auf den PC zu übertragen und auf dem 
Bildschirm anzuzeigen.

das senden und anzeigen ist kein problem, ich weiss nur nicht wie ich 
die RTC hinkriege!

mfg marco

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco G. schrieb:

> das senden und anzeigen ist kein problem, ich weiss nur nicht wie ich
> die RTC hinkriege!

Eine RTC, also eine Uhr ist auch nichts anderes als ein Zähler, der 
still und heimlich vor sich hinzählt.
Nur das er bei 60 wieder auf 0 zurückgesetzt wird und ein 'Übertrag' in 
die nächste Stelle erfolgt.

Wir nennen das dann nicht Einer, Zehner und Hunderter, sondern Sekunden, 
Minuten und Stunden. Aber das Prinzip ist völlig gleich.

Wenn du also einen Timer so aufsetzen kannst, dass er dir regelmässig, 
sagen wir mal 100 mal in der Sekunde, eine Fúnktion aufruft, dann zählst 
du in der Funktion die Aufrufe mit und beim 100ten Aufruf ist dann 1 
Sekunde vergangen. Nach 60 Sekunden 1 Minute. Nach 60 Minuten 1 Stunde. 
Nach 24 Stunden 1 Tag, nach 28/29/30/31 Tagen (ja nach aktuellem 
Monat/Jahr) ein Monat und nach 12 Monaten 1 Jahr.

Einfach nur Zählstufen.
Alles steht und fällt mit dem kleinsten Takt. Wenn deine 100 (oder 
wieviele es dann rein rechnerisch tatsächlich sind) Funktionsaufrufe 
nicht stimmen, stimmt auch der Rest nicht.

Das bedeutet aber auch, das dir die Auflistung der Register nur bedingt 
weiterhilft. Du musst im Datenblatt nachlesen, wie du es hinkriegst, 
dass dir der Timer eine bestimmte Funktion regelmässig aufruft. 
Regelmässig alleine reicht noch nicht. Der Genauigkeit zuträglich wäre 
es, wenn man das auch noch so hintricksen kann, dass in 1 Sekunde exakt 
eine ganze Zahl Aufrufe erfolt. Wie groß diese ganze Zahl ist, spielt 
dann wieder weniger die Rolle.

Autor: Marco G. (marco_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da wäre es doch am besten einen 8-Bit timer im reload mod einzusetzen 
und das Hauptprogramm immer nach 0.1ms (von 55 auf 255 = 200; 
200/2'000'000 = 0.0001) durch interrupts zu unterbrechen und einen 
conter hochzuzählen bis 10'000. Denke dass ich da eine sehr genaue 
sekunde bekomme, oder habe ich etwas vergessen in die berechnung 
einzubeziehen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco G. schrieb:

> sekunde bekomme, oder habe ich etwas vergessen in die berechnung
> einzubeziehen?

Probiers aus.
Eine Uhr hat den Vorteil, dass man nach ein paar Minuten ziemlich 
schnell sieht ob man etwas vergessen hat. Die Fehler akkumulieren sich.

Autor: Marco G. (marco_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jop dankeschön für die hilfen :D

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wirklich Muehsame an RTCs ist eine Gangdifferenz zu anderen Uhren. 
daher sollte man die Sekunde genau hinkriegen. Eine Interne Uhr hat nun 
einfach nicht diese Stabilitaet. Ohne Quarz ist da nichts. Von den 
guenstigen Quarzen ist der 32kHz der Genaueste. 10ppm sind da Standard.

Autor: aaahhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wozu der Aufwand nimm externen RTC zB DS1307 oder etwas weniger altes !

Autor: why? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum ein externes IC, wenn er anscheinend eh noch Ressourcen in seinem 
Controller zur Verfügung hat? Außerdem kommt dann die Kommunikation mit 
dem externen RTC dazu, die braucht ja auch Ressourcen und vorallem Pins 
(die vielleicht nicht mehr verfügbar sind).

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco G. schrieb:
> Weiss jemand wie ich eine RTC in C auf dem uC SAB-C517A mit internem
> 2MHz Takt Programmieren kann?
>
> Macht man das mit Timern?

Ja.
Am besten geht das mit Timer 2 im Reload-Mode (C517a Users-Manual S93).
Dann im Timerinterrupt noch eine Variable runterzählen, um den 
Sekundentakt zu erhalten.
Dann Sekunden 0..59, Minuten 0..59, Stunden 0..23 usw. zählen.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.