Liebe ESP-Fans,
ich baue gerade eine Steuerung, die darauf angewiesen ist, das der ESP 
sehr schnell hochfährt, da mit einem Signal die Stromversorgung 
angeschaltet wird und dann ein anderes Signal (was ca. 100ms 
zeitverzögert kommt) gezählt werden soll. Bei meinen ersten Experimenten 
hat der Code fast zwei Sekunden benötigt, um ausgeführt zu werden. Durch 
Optimierungen konnte ich das auf ca. 300ms (bei einem ESP8266) drücken. 
Ein ESP32 startet naturgemäß schneller. hier lag der Wert deutlich 
niedriger.
Jetzt kommt die erstaunliche Entdeckung: Die Startzeit variiert sehr 
stark und hängt von Kopiervorgängen von Dateien auf den ESP ab. Das 
heißt, wenn ich alle Quellen auf dem ESP lösche und wieder drauf kopiere 
erhöht sich die Startzeit. Aber noch kurioser ist, dass ab einer 
gewissen Anzahl von Kopiervorgängen die Zeit wieder schlagartig auf 
einen kleinen Wert sinkt. Hier die Messwerte für einen ESP32:
MicroPython v1.20.0 on 2023-04-26; ESP32 module with ESP32
1. Durchlauf: Startup duration = 8 ms
2. Durchlauf: Startup duration = 10 ms
3. Durchlauf: Startup duration = 13 ms
4. Durchlauf: Startup duration = 14 ms
5. Durchlauf: Startup duration = 16 ms
6. Durchlauf: Startup duration = 19 ms
7. Durchlauf: Startup duration = 22 ms
8. Durchlauf: Startup duration = 23 ms
9. Durchlauf: Startup duration = 25 ms
10. Durchlauf: Startup duration = 28 ms
11. Durchlauf: Startup duration = 30 ms
12. Durchlauf: Startup duration = 32 ms
13. Durchlauf: Startup duration = 34 ms
14. Durchlauf: Startup duration = 37 ms
15. Durchlauf: Startup duration = 39 ms
16. Durchlauf: Startup duration = 40 ms
17. Durchlauf: Startup duration = 43 ms
18. Durchlauf: Startup duration = 5 ms
Ein Durchlauf besteht immer aus:
| 1 | rm /pyboard/*
 | 
| 2 | cp *.py /pyboard/
 | 
| 3 | repl
 | 
| 4 | Strg-D (soft reboot)
 | 
Der Programmcode ist:
| 1 | from time import ticks_diff, ticks_ms, sleep
 | 
| 2 | pstart = ticks_ms()
 | 
| 3 | from machine import Pin
 | 
| 4 | 
 | 
| 5 | # read Configuration
 | 
| 6 | POWER_PIN = 14
 | 
| 7 | 
 | 
| 8 | power = Pin(POWER_PIN, Pin.OUT)
 | 
| 9 | print(f"Startup duration = {ticks_diff(ticks_ms(), pstart)} ms")
 | 
| 10 | power.on()
 | 
| 11 | sleep(1)
 | 
| 12 | power.off()
 | 
Hat jemand eine Idee, woran das liegen könnte. Gibt es irgend eine 
Möglichkeit, den Zustand der kurzen Startup-Zeit direkt zu erreichen? 
Liegt es eventuell am Filesystem des ESPs. Gibt es so etwas wie eine 
Formatierung oder Defragmentierung?
Ich freue mich über Tipps oder ähnliche Erfahrungsberichte.
Viele Grüße
Haiko