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
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?
Ein Realtimeclock hat ueblicherweise einen externen 32kHz Quarz ... Was soll's denn werden ?
@ 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
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.
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?
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.
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.
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).
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
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.