Forum: Mikrocontroller und Digitale Elektronik Hundertstel in Format mm:ss,hh wandeln


von Hans-Peter (Gast)


Lesenswert?

Ein Problem gelöst....und gleich das nächste :-(
Ich habe dam mal wieder voll den Balken vorm Kopf.
Da ihr mir schon so oft geholfen habt:
uC als Stoppuhr....ein Timer löst einen Interrupt alle 0,01 Sekunden
aus.....die Variable "hundertstel" wir hochgezählt bis auf 65536.
Dann wird die Variable "vielfaches_hundertstel" um eins erhöht und
"hundertstel" fängt von vorne an....soweit so gut.
Wie rechne ich die Sache denn aber nun geschickt in das Format mm:ss,hh
um ??
Habt ihr das schon mal gemacht ???


HPK

von TOM (Gast)


Lesenswert?

warum läst du den Timer bis 65536 laufen?

Spontane schnelle Idee:
wenn du ihn im autoreload von (65536-6000) laufen läßt, hast du in
deinem "Vielfachen" die Minuten.
Und im Timer:
(timer+6000)/100 = sekunden
(timer+6000)%100 = hunderstel

Ich hoffe meine spontane Idee ist so richtig.

Gruß

Thomas

von crazy horse (Gast)


Lesenswert?

für Uhren gibt 2 prinzipielle Wege:
-entweder für jede Zeitstelle ein eigenes Byte benutzen, bei ==60 (oder
100 oder 24) auf Null setzen und das nächsthöhere Byte incrementieren.
Das ist direkt Ausgabefreundlich, mehr aber auch nicht. Aufwändiger in
der Programmierung, langsamer, und rechnen kann man damit so gut wie
gar nicht.
-oder, so ähnlich wie du es angedacht hast, eine Zeiteinheit in einer
entsprechend grossen Variable zählen und erst bei der Ausgabe
formatieren. Das macht man dann mit Divisionen, Ganzzahlteil und Rest.

Mit einer long-Variablen kommst du bei 1/100s immerhin auf >1Jahr, das
sollte genügen.
Bsp: Zählerstand 456789 /100=4567, Rest 89 (1/100s)
4567/60=76, Rest 7 (s)
usw.

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.