Hallo,
Danke das Du dir die Zeit genommen hast mal reinzuschauen.
guntherb:
Also, was mir spotan auffällt:
Serial.begin(57600); in 017_Vermessung.ino
Serial.begin(9600); in WaitForConversion_Vermessung_004.ino
Bei 9600 Baud kann die Übertragung der Zeile "Sensor1 13244" schonmal 20ms dauern.
okay stimmt, sollte sich jedoch nicht auf die eigentlichen einzelnen Zeitnahme auswirken.
Deswegen hatte ich mir überlegt vor und nach einer Befehlszeile die Zeit zu speichern um dann in Ruhe die Differenz zu bilden und seriell auszugeben. Die Messung an sich dürfte mit serial.print dann nicht verfälscht werden. Bestätigen auch meine Messungen, in allen Sketchen gleiche Zeitausgaben.
du speicherst "vorher" bei jedem loop durchlauf ab, "nachher" aber nur, wenn die if-Bedingung erfüllt ist, also nur alle 800ms.
Also ist bei fast allen Abfragen nachher kleiner also vorher. => Die Ausgabe stimmt, die Abfrage ist unsinnig. (Hast du vielleicht nur die geschweiften Klammern vergessen? oder falsch gesetzt?)
Ja okay, das ist Schwachsinn. Ich wollte die benötigte Rechenzeit für die IF Abfrage wissen. Habs rausgenommen.
Was mir bei deinen ganzen Messungen gerade nicht ganz klar ist: Wo genau ist das Problem?
Mein zufällig entdecktes Problem ist, dass mir Deine Looptime Meßfunktion bei meinem nackten Dallas Testsketch, hier "018_Vermessung" ohne die ganzen Zwischenzeitnahmen immer konstante Loopzeiten zwischen 0 und 1ms anzeigt. Sehr selten 2ms.
Bei meinem großen "Projektsketch" gibt mir Deine Looptime Funktion jedoch Werte von maximal 30ms aus, selbst wenn ich die extrem zurückgebaut habe. Und zwar immer genau dann wenn auch die Sensoren beackert wurden. Das konnte ich mir nicht erklären versuche seitdem herauszufinden warum es Unterschiede mit dem Sketchen gibt bei den Durchlaufzeiten.
Aktuell habe ich immer noch gleiche Befehlsmesszeiten meiner Zwischenmessungen: (alles in µs)
Sensor1 13328
Sensor2 13040
Display1 472
Display2 476
request 2216
setmillis 4
jedoch sagt mir die Looptime immer Zeiten an zwischen 0 und 1ms. Kann doch aber nicht sein, wenn 2 Sensoren auslesen schon ca. 26ms dauert und die vielen seriellen Ausgabe unbeachtet auch etwas Zeit kosten.
Aber jetzt kommst. Wenn ich die 4 Zeilen dazu nehme wo ich den Zeitstempel zerlege, was nur 120µs dauert, dann sagt mir die Lopptime immer ein max. von 31ms. Das sind doch aber alles Ganzzahlrechnungen. Warum sollen die bremsen? Außerdem werden die max. 31ms nur gemessen wenn auch die Sensoren beackert wurden. Also während die Sensoren in Ruhe gelassen werden sind es max. 4ms.
Was hat jetzt das eine mit dem anderen zu tun? Ohne Zeitstempelzerlegung ist alles bestens. Egal wie ich es drehe und wende, ich kanns mir nicht erklären.
Wenn die Looptime Funktion immer max. 30ms anzeigen würde, dann hätte ich kein Problem. Das wäre für mich glasklar das das Sensoren auslesen wirklich ca. 26ms dauert. Nur in diesem einem kurzen Sketch zeigt die Looptime konstant max. 1ms trotz Sensoren auslesen.
Problem irgendwie verständlich erklärt? Ich hoffe es, anders und besser kann ich es nicht erklären.
v017_Zeitnahme.txt (57.6 KB)
DS1820_017.ino (19.5 KB)
v018_Zeitnahme.txt (245 KB)
Vermessung_018.ino (4.69 KB)