Forum: Mikrocontroller und Digitale Elektronik STM32 Real Time Clock mit Millisekunden


von Peter (Gast)


Lesenswert?

Hallo,

weiß jemand, ob es einen STM32 gibt, der eine RTC mit Millisekunden hat.
Der STM32 den ich z.Z. benutze STM32F103 hat für die RTC einen 32-Bit 
Counter, damit kann man natürlich keine Uhrzeit + Millisekunden + Datum 
realisieren, da bräuchte man mindestens ein 64-Bit Counter.

von ♪Geist (Gast)


Lesenswert?

>damit kann man natürlich keine Uhrzeit + Millisekunden + Datum
>realisieren, da bräuchte man mindestens ein 64-Bit Counter.
Die RTC zählt Sekunden. Wenn du Millisekunden (pi*Daumen) brauchst, 
kannst ja zum Systick Counter greifen.

von Peter D. (peda)


Lesenswert?

Peter schrieb:
> da bräuchte man mindestens ein 64-Bit Counter.

Dazu hat man Interrupts erfunden.
Ein Timer zählt 32 Bit und im Überlauf-Interrupt zählt er noch eine 
Variable 32 Bit.

von Micha (Gast)


Lesenswert?

Manche haben ein sog. Sub-second-Register, vielleicht hilft das ja. 
Siehe S. 31 in 
http://www.st.com/st-web-ui/static/active/cn/resource/technical/document/application_note/DM00025071.pdf

von Mr.T (Gast)


Lesenswert?

♪Geist schrieb:
>>damit kann man natürlich keine Uhrzeit + Millisekunden + Datum
>>realisieren, da bräuchte man mindestens ein 64-Bit Counter.
> Die RTC zählt Sekunden. Wenn du Millisekunden (pi*Daumen) brauchst,
> kannst ja zum Systick Counter greifen.

Und der liegt - wie der RTC auch - in der Backup-Domain?

von Ben W. (ben_w)


Lesenswert?

also  z.B. der STM32F407VG hat ein Subsecond register
soweit ich weiß wird dieser aber nicht gesichert und läuft beim Start 
wieder bei 0 an.
kann mich aber auch irren

von Peter (Gast)


Lesenswert?

@Autor: ♪Geist (Gast)
Der Systick Counter geht aus mehreren gründen.
1. RTC wird mit ein speziellen Uhrenquarz angetrieben.
   Der Systick wird durch die Clock des Microcontroller angetrieben.
   Dieser ist in meinen Fall nicht so präzise.
2. Systick funktioniert nicht, wenn der Microcontroller schläft
   (RTC ist in der Bakeup Domain)
3. Systick läuft nicht synchron zur RTC.

Wenn man mit Millisekunden arbeiten muss geht pi*Daumen nicht.



@Peter Dannegger (peda)
Der Microcontroller wird die meiste Zeit im Sleep Modus sein um Strom, 
und in einstellbaren Zeitabstände soll diese kurz aufwachen, seine 
Arbeit erledigen und dann wieder schlafen gehen. Diese Zeitabstände 
sollen halt halt in Millisekunden festlegbar sein (Z.B. 100ms, 5200ms, 
100500ms, ...) . Die RTC läuft auch dann wenn der Microcontroller 
schläft und mit den Ararm Interrupt kann der MC geweckt werden.

@Micha (Gast)
@Ben W. (ben_w)
Das mit den Sub-second-Register könnte vieleicht eine Lösung sein.
Dieses muß aber auch wie der RTC Counter laufen, wenn der 
Microcontroller schläft.

von Peter (Gast)


Lesenswert?

Peter schrieb:
> Der Systick Counter geht aus mehreren gründen.

Aha ein Wort verschluck, vollständig:
Der Systick Counter geht aus mehreren gründen NICHT.

von Micha (Gast)


Lesenswert?

Peter schrieb:
> Dieses muß aber auch wie der RTC Counter laufen, wenn der
> Microcontroller schläft.
Sollte kein Problem sein, dafür gibt es ja "RTC alarm A sub second 
register" (RTC_ALRMASSR) und dasselbe für Alarm B.

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.