millis() Langzeit

Hey,
Ich bin momentan an einem Projekt dran, bei dem ich gezwungenermaßen Multitasking betreiben muss.
Allerdings soll der Arduino (Pro Mini) für eine längere Zeitspanne aktiv sein. Ist die millis-Methode für
lange Laufzeiten (6 Monate+) noch geeignet oder gibt es bessere Alternativen?
Vielen Dank, LG Emil

Solange eine einzelne Zeit nicht länger, als 49 Tage ist und Du alles richtig machst, gibt es keine Probleme.

Für mehr hast Du zu wenig Infos geliefert.

Gruß Tommy

Danke für die schnelle Antwort!
Was ist mit "einzelne Zeit" gemeint?

Ich überprüfe einen Parameter jede Sekunde, während der Rest des Codes simultan
und ohne delay läuft.

Bei Dir "einzelne Zeit" = 1 Sekunde

if(jetzt - vorhin >=1000)

Ist die millis-Methode für lange Laufzeiten (6 Monate+) noch geeignet oder gibt es bessere Alternativen?

Ist sie nicht.
Für ca 49 Tage, niicht mehr.

Alternativen?
Nennt sich "Programmieren!"

Bei längeren Laufzeiten ( 6 Monate+ ) würde ich erstmal davon ausgehen, dass

  • man mit 1 Sekunde Zeit-Auflösung vermutlich hinkommt (kein Problem mit uint32_t)
  • man nur mit Aufwand einen absolut ungestörten Dauer-Betrieb hinkriegen wird. Das wird die größere Herausforderung.

Ohne weitere Infos vom TO wird das hier mal wieder eine der berüchtigten Raterunden, die im Endeffekt meist am eigentlichen (unbekannten) Thema vorbei gehen.

Der TO sollte also noch ein paar Infos nachreichen, wenn er sinnvolle Hilfe haben will.

Gruß Tommy

Hi

Nun denn - will ich auch Mal.

Millis wird Dir auch in 6 Monaten einen (ungefähren) Sekunden-Takt geben.
Wenn Du jede Sekunde eine Variable +1 zählst, kannst Du berechnen, wann die 6 Monate um sind.
millis() selber wird nach 49,batsch Tagen wieder auf Null überlaufen - wird also öfter binnen der 6 Monate passieren - was aber egal ist, da mit korrekter Abfrage sich der Überlauf rausrechnet.

Nur kann Es Dir passieren, daß Dein Versuch zwar um 12:00h startet, die 6 Monate aber nicht um 12:00h wieder vorbei sind (... ein 6er im Lotto wird wahrscheinlicher sein, selbst eine RTC wie die DS3231 wird hier Lücken aufweisen).

Wenn's Dir auf die recht exakte Sekunde ankommt - also Dein Arduino über die 6 Monate immer eine sehr genaue Uhrzeit 'kennt', nimm eine DS3231 und lasse Dir von Dieser einen Sekundentakt ausgeben - Den kann der Arduino erfassen und darauf hin Seine Arbeit erledigen.

MfG

Raten wir weiter. Wenn ihm das noch zu ungenau erscheint, kann er die DS3231 ja täglich mit NTP stellen.

Gruß Tommy

Woher kriegt ein Arduino Pro Mini NTP?
Aber eine batteriegepufferte RTC ist sicher eine gute Ergänzung zum erkennen, wann 6 Monate rum sind.

Viele RTC Module haben auch einen eigenen zusätzlichen EEPROM.

michael_x:
Woher kriegt ein Arduino Pro Mini NTP?

Über ein angeschlossenes Ethernet- oder WLAN-Modul? Was sonst?

Gruß Tommy