Ok, zwichenzeitlich habe ich in #5 von Rechnen mit Variablen klappt nicht. - Deutsch - Arduino Forum erfahren, dass der Datentyp der Zielvariablen wohl nicht entscheidend für die Rechnung ist, sondern es hier auf die Werte ankommt. Die kann wohl durch die Kennungen z.B. "UL" beeinflusst werden, wie du sie in deinem Beispielcode auch verwendest.
Der Beispielcode ist überigens sehr übersichtlich und ich kann mir vorstellen in diese Richtung um zu bauen. (Muss noch ein paar andere Bedingungen mitnehmen.)
Grübeln musste ich bei:
if ((millis() - lTempMessung - TempConvertZeit) > TempIntervall)
Hier kannst du dir 2 Unterläufe einfangen.
Wenn ich dich richtig verstanden habe wäre der erste Unterlauf bei millis() < lTempMessung. Der wird durch den Programmablauf verhindert.
Der zweite Unterlauf (den habe ich lange nicht gesehen) millis() < TempConvertZeit.
Gedanklich hatte ich den ignoriert, da millis so groß im vergleich zur TempConvertZeit ist, aber durch millis() - lTempMessung - TempConvertZeit wiederholt sich das "Problem" nach jeder Aktualisierung von lTempMessung.
Das ist dann fast eine Dritte Möglichkeit für einen Unterlauf.
Wenn man länger darüber nachdenkt, wird es logisch.
Gilt es allgemein, dass sichergestellt werden muss, dass bei der Subtraktion von unsigned Datentypen der Minuend größer als der Subtrahend sein muss?
Vielen Dank für die Anregungen. Ich sehe mir das morgen noch mal an, jetzt geht es erstmal ins Bett.
Viele Grüße
Frank