Forum: Mikrocontroller und Digitale Elektronik RTC mit einstellbarem Alarm für Jahreszahl gesucht


von Markus K. (markus_k230)


Lesenswert?

Hallo,

ich habe jetzt schon einige RTC Chip Datenblätter durchgeschaut und 
immer nur einen einstellbaren Alarm bis zu einem wählbaren Monat 
gefunden. D.h. der am weitesten in der Zukunft liegende Alarm wäre dann 
auf 364Tag, 23h, 59min usw. zu stellen. Ich hätte aber den Bedarf einen 
Alarm auch mal auf 2-3 Jahre in der Zukunft zu stellen. Sprich das Alarm 
Feature sollte auch noch über das Jahr als einstellbare Größe verfügen. 
Klar könnte man sich auch etwas mit einem Zähler basteln der dann halt 
2-3 mal hochgezählt haben muss bis der eigentliche Alarm soweit ist. 
Aber richtig elegant ist das nicht.
Kennt jemand so einen Baustein? Achja, dummerweise brauche ich auch noch 
das Feld 'Hundreths of seconds'. Die feine Auflösung hat ja auch leider 
nicht jeder RTC Baustein. I2C Interfache wäre auch ganz gut. Ist aber 
nicht zwingend.

Viele Grüße
Markus

von Jim M. (turboj)


Lesenswert?

Markus K. schrieb:
> Achja, dummerweise brauche ich auch noch
> das Feld 'Hundreths of seconds'.

Dann würde ich eher zu einem µC mit integrierter RTC raten, wo man 
direkt Zugriff auf den RTC Counter hat. Über I²C wäre mir das zu lahm.

Bei EFM32LG/GG/WG z.B. gäbe es auch einen extra Versorgungspin falls 
nötig.

von Peter D. (peda)


Lesenswert?

Was hindert Dich daran, den MC jeden Tag einmal aufzuwecken, die Tage zu 
zählen und mit einem Wert im EEPROM zu vergleichen.
Idealer Weise zählt man die Zeit intern in 32Bit Sekunden, dann ist es 
nur ein 32Bit-Vergleich.

Nehmen wir eine Testzeit von 100ms alle 24h und einen Stromverbrauch von 
20mA aktiv, dann ist der zusätzliche Stromverbrauch satte 23nA.

von Gcc (Gast)


Lesenswert?

... und Peters Vorschlag hat den zusätzlichen Charme, dass du frühzeitig 
auf Umgebungveränderungen wie LowBattery oder Draht ab reagieren kannst 
und das nicht erst dann feststellen musst, wenn nach drei Jahren der 
Alarmzeitpunkt gekommen ist.

von Georg (Gast)


Lesenswert?

Peter D. schrieb:
> Idealer Weise zählt man die Zeit intern in 32Bit Sekunden, dann ist es
> nur ein 32Bit-Vergleich.

Der TO will 3 Jahre in 1/100 Sekunden. Wahrscheinlich eh nur Spinnerei, 
aber das überschreitet 32 bit, ist aber kein grundsätzliches Hindernis.

Hoffentlich findet er auch eine RTC, die in 2 Jahren auf 0,01 Sekunden 
genau bleibt. Dass RTCs das i.d.R. nicht auflösen, liegt eben daran, 
dass die Abweichung auch im allerbesten Fall einige Sekunden pro Jahr 
beträgt und eine Sub-Sekunden-Auflösung einfach nicht sinnvoll ist.

Georg

von Pete K. (pete77)


Lesenswert?

Georg schrieb:
> Dass RTCs das i.d.R. nicht auflösen, liegt eben daran,
> dass die Abweichung auch im allerbesten Fall einige Sekunden pro Jahr
> beträgt und eine Sub-Sekunden-Auflösung einfach nicht sinnvoll ist.

Das liegt wohl eher daran, dass der Quartz nicht genauer ist.

von Joachim B. (jar)


Lesenswert?

Pete K. schrieb:
> Das liegt wohl eher daran, dass der Quartz nicht genauer ist.

wenn der Quarz auf einer Temperatur gehalten wird, warum sollte er 
abweichen?
OK er kann kaputt gehen oder fremdbeschleunigt werden.

von Peter D. (peda)


Lesenswert?

Die 10ms Auflösung braucht er wohl kaum zum Aufwachen.

Die übliche Herangehensweise ist, man holt sich einmalig nach dem 
Aufwachen die RTC-Zeit ab und zählt dann intern mit dem CPU-Quarz und 
einem Timer weiter. Damit kann man selbst 1µs Auflösung problemlos 
ereichen.

von Joachim B. (jar)


Lesenswert?

Peter D. schrieb:
> Die übliche Herangehensweise ist, man holt sich einmalig nach dem
> Aufwachen die RTC-Zeit ab

sehe ich auch so, die Uhr geht genauer als die interne Zählung, also 
stellt man den Wecker von der RTC für alle größere Zeit und lässt die 
CPU schlafen, die kleinen Zeiten unter 1 Sekunde macht der CPU Timer

von Hugo (Gast)


Lesenswert?

Du kannst problemlos einen Uhrenquarz an einen AVR hängen, einen Timer 
asynchron laufen lassen und bei Überlauf wacht der Chip auf. Dann zählst 
du einfach deine Zeit runter. RTC selbst gebaut.
Das habe ich mal gemacht, um eine LED alle paar Sekunden aufblitzen zu 
lassen. Mit 3x 1,5V-Batterie in Reihe läuft das locker zwei Jahre. 
Wahrscheinlich gibt's auch noch Optimierungspotenzial, was den 
Energieverbrauch des Chips angeht.

von Georg (Gast)


Lesenswert?

Hugo schrieb:
> Du kannst problemlos einen Uhrenquarz an einen AVR hängen

Da bekommt der TO ein Problem: 100 Hz lassen sich nicht von 32768 Hz 
ableiten, höchstens 64 Hz oder 128 Hz. Also nix mit 1/100 Sekunde.

Georg

von Rainer B. (katastrophenheinz)


Lesenswert?

Georg schrieb:
> Hugo schrieb:
>> Du kannst problemlos einen Uhrenquarz an einen AVR hängen
>
> Da bekommt der TO ein Problem: 100 Hz lassen sich nicht von 32768 Hz
> ableiten, höchstens 64 Hz oder 128 Hz. Also nix mit 1/100 Sekunde.
>
> Georg

Deswegen wird ja auch gern folgendes gemacht: Asynchronen Timer mit 
Uhrenquarz betreiben, OC-Interrupt jede Sekunde, Rest des Systems mit 
internem RC-Oszillator, dann den 16-Bit Timer mit beliebiger Auflösung.
Im OC-Interrupt des async. Timers dann den internen Oszillator über 
OSCCAL kalibrieren (Über Soll-/Istvergleich des 16bit-Timerwertes). 
Damit kriegt man das das ganze System trotz RC-Oszillator so genau hin 
wie durch die Genauigkeit des Uhrenquarzes vorgegeben. Für 
Langzeitgenauigkeit ist dann eh noch ein periodischer Abgleich mit einem 
Zeitnormal wie zb DCF77 oder NTP erforderlich.

: Bearbeitet durch User
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.