Forum: Mikrocontroller und Digitale Elektronik MSP430 mit Energia "millis() "


von Angelo M. (flipflopfreak)


Lesenswert?

Hallo Leute,

bastel gerade mit Energia und dem MSP430. Baue eine kleine Einrichtung 
für Zeitmessung. Dabei habe ich folgendes gefunden: 
http://energia.nu/Millis.html

Wie die library anzuwenden ist weiß ich. Mich würde aber interessieren 
wie das mit dem overflow zu verstehen ist. Anscheinend wird ja der 
Speicherbereich von unsigned long, nach ca. 50 Tagen Programmlaufzeit, 
überschritten. Danach springt der Wert zurück auf 0. Soweit hab ich das 
verstanden.

Muss ich befürchten das mir das Programm abschmiert wenn es zum overflow 
kommt? Oder setzt sich das wirklich einfach und unproblematisch auf 0 
zurück?

Beste Grüße

von aSma>> (Gast)


Lesenswert?

Angelo M. schrieb:
> Muss ich befürchten das mir das Programm abschmiert wenn es zum overflow
> kommt? Oder setzt sich das wirklich einfach und unproblematisch auf 0
> zurück?

Hängt davon ab wie dein Programm/Funnktion gestrickt ist. Poste mal den 
Code für die Funktion millis().

Man könnte auch einfach eine 64bit Variable nehmen, dann hast du für die 
nächsten Millionen Jahre Ruhe.

So: uint64_t millis();

von Clemens L. (c_l)


Lesenswert?

Angelo M. schrieb:
> Muss ich befürchten das mir das Programm abschmiert wenn es zum overflow
> kommt? Oder setzt sich das wirklich einfach und unproblematisch auf 0
> zurück?

Die Funktion millis() selbst läuft einfach weiter.

Ob dein eigener Code mit diesem Überlauf zurecht kommt, oder sich 
stattdessen wie Windows 95 verhält, weißt nur du selbst.

von Angelo M. (flipflopfreak)


Lesenswert?

Am meinem Code selbst ist nichts besonderes. Der liest nur den Wert von 
millis() in ein "long" ein und rechnet damit ein wenig. Wenn millis also 
wirklich am Ende einfach nur wieder 0 wird, sollte es kein Problem 
geben.

von Einer K. (Gast)


Lesenswert?

Angelo M. schrieb:
> und rechnet damit ein wenig
Wenn du da Mist baust....
z.B. den Überlauf nicht beachtest....

Tipp:
Niemals Zeitpunkte, welche in der Zukunft liegen, berechnen.
Also: "Zeitpunkt = millis()+irgendwas;" ist böse.

von Clemens L. (c_l)


Lesenswert?

Angelo M. schrieb:
> Wenn millis also wirklich am Ende einfach nur wieder 0 wird, sollte
> es kein Problem geben.

Es zählt aber weiter.

Solange du nur die Different zweier Werte berechnest, und diese 
Differenz nie sehr groß werden kann, funktioniert es aber.

von Max D. (max_d)


Lesenswert?

U. F. schrieb:
> Niemals Zeitpunkte, welche in der Zukunft liegen, berechnen.
> Also: "Zeitpunkt = millis()+irgendwas;" ist böse.

Oder in der Vergangenheit (1.1.1970 z.B.)

von Einer K. (Gast)


Lesenswert?

Max D. schrieb:
> 1970

Ich glaube die 1970 haben irgendwas mit Sekunden zu tun. Hier sind 
Millisekunden das Objekt der Begierde.

von Max D. (max_d)


Lesenswert?

U. F. schrieb:
> Max D. schrieb:
>> 1970
>
> Ich glaube die 1970 haben irgendwas mit Sekunden zu tun. Hier sind
> Millisekunden das Objekt der Begierde.

Das war auch mehr ein Seitenhieb auf unseren Lieblingshersteller, als 
ein echtes Problem für den TO ^^

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.