Hallo,
ich versuche mit einem ESP32 C3 ein Manchester-codiertes Datenpaket zu
senden. Bitrate ist 1000 bit/s, ein Datenpaket hat 34 Bits (1 Startbit,
32 Datenbits, 1 Stopbit). Dazu schalte ich den TX Pin in einer Schleife
entsprechend:
1 | void sendBit(bool val) {
|
2 | digitalWrite(1, val);
|
3 | delayMicroseconds(500);
|
4 | digitalWrite(1, !val);
|
5 | delayMicroseconds(500);
|
6 | }
|
Die Funktion delayMicroseconds aus esp32-hal-misc.c scheint aber
insbesonders bei stärkerer WiFi Auslastung kein stabiles Timing zu
liefern, siehe Anhang. In der oberen Hälfte ist alles in Ordnung, unten
sind einige Bitzeiten zu lang, so dass das Datenframe ungültig wird.
Kennt jemand eine zuverlässige andere Möglichkeit die Daten sauber zu
senden?
Schöne Grüße
Stefan