Arduino Forum

International => Deutsch => Topic started by: manu79 on Jan 27, 2011, 08:28 pm

Title: time - unsigned long
Post by: manu79 on Jan 27, 2011, 08:28 pm
Heyho,

gerade noch ne Frage: Ich speichere time() in einer unsigned long Variable. time() ist in Millisekunden und läuft ab "boot", unsigned long geht bis 4294967295. Das heisst, 4294967295/1000/60/60/24 ~ 50, also nach 50 Tagen ist Schicht. Was passiert dann? Wie wird time() intern gespeichert/gezählt, auch unsigned long? Fängt time() nach 50 Tagen wieder bei 0 an, kriege ich einen Überlauf in meiner Variable, oder zählt diese dann einfach wieder bei 0 weiter?

Falls nicht,  was kann ich machen, kann ich time() resetten, bevors zu groß wird?

(Falschaussagen meinerseits gerne korrigieren)

VG Manu.
Title: Re: time - unsigned long
Post by: MaFu on Jan 27, 2011, 10:30 pm
Es ist beides richtig. Nach knapp 50 Tagen geschieht ein Überlauf und damit geht es wieder bei 0 los.
Ob das problematisch ist hängt von Deinem Verwendungszweck ab.
Title: Re: time - unsigned long
Post by: uwefed on Jan 27, 2011, 11:00 pm
Hallo manu79

wenn man die Bedingung der Wartezeit richtig schreibt dann funktioniert das auch bei einem Überlauf.
http://www.arduino.cc/playground/Code/TimingRollover

Grüße Uwe
Title: Re: time - unsigned long
Post by: manu79 on Jan 28, 2011, 08:15 am
Danach hatte ich gesucht, danke euch :)