Nase voll von delay()- jetzt geht`s mit millis() weiter..

..aber was tun, wenn man einen Sketch benötigt, der über Monate stabil laufen soll und zudem kein Geld für Zusatzkomponenten vorhanden ist?

Kann man millis() auch ohne Erdung von RESET oder Drücken des RESET-Knopfes zurücksetzten?

Wie umgehe ich den drohenden millis()-Überlauf?

Wie lange dauert es denn nun wirklich, bis es dazu kommt (man liest so viele unterschiedliche Aussagen)?

Gruß Chris

  1. Du brauchst millis() nicht zurücksetzen
  2. wenn Du die Subtraktion richtig machst macht der Überlauf keine Probleme bei der Differenzzeitberechnung.
  3. irgendwo sah ich mal eine Erweiterung die den Überlauf von millis() abfing und den Bereich auf etliche Jahre vergrößert. Ist uralt (IDE0010) und nicht weiter gepflegt worden. Der Maximalwert von millis ist mitllerweile 2^32-1 (4294967295 ) und nicht 34359737 wie beschrieben.
    Der Überlauf ist nach ca 49,5 Tage genaugesagt nach 4294967,295 Sekunden.

Leo 72 hat eine SoftwareRTC geschreiben :
swRTC, un Orologio in Tempo Reale via software – Leonardo Miliani italienisch
swRTC, a software Real-Time Clock – Leonardo Miliani englisch
http://arduino.cc/forum/index.php/topic,80489.0.html im Forum
Natürlich ist die Zeit futsch wenn der Arduino abgeschaltet wird.

Grüße Uwe