Frage zu ESP32 Geschwindigkeit

OP #7734237
Lesenswert?

Hallo, ich bin ein ESP32 Neuling und wollte da ein paar Experimente machen. Ich habe in der Arduino Ide DigitalWrite(10, HIGH); DigitalWrite(10, LOW); eingegeben und bekomme ein Rechtecksignal von ca 300kHz, wobei Low dreimal so lang ist wie High. Ich habe das Ganze dann in eine whlile Schleife gelegt und komme auf ca 500kHz. Ich benutze ein ESP32_C3 Super Mini. Weiß jemand ob es beim ESP32 auch Ports gibt? Beim Arduino Nano habe ich das auch mal probiert und mit z. B. PortB 0b00000001; war die Geschwindigkeit um den Faktor 5 - 10 mal höher als bei digitalWrite; Vielen Dank für jede Antwort Hans

#7734290
Lesenswert?

Hans L. schrieb:

Ich habe in der Arduino Ide DigitalWrite(10, HIGH); DigitalWrite(10, LOW); eingegeben

Was ist das für eine Funktion? In der Standardimplementation gibt es lediglich eine Funktion digitalWrite(). https://www.arduino.cc/reference/de/language/functions/digital-io/digitalwrite/

Du könntest alternativ digitalWriteFast() probieren, wo viel vom Overhead der Funktion digitalWrite() zur Geshwindigkeitsoptimierung ausgespart wurde.

Moderator #7734330
Lesenswert?

Rainer W. schrieb:

Du könntest alternativ digitalWriteFast() probieren

Gibt es das auch für den ESP32-C3?

Die Fast-Funktionen sind ja keine Standardfunktionen in Arduino und deswegen nicht auf allen Plattformen verfügbar. Ich kenne diese Funktionen vom Teensy 4.0, wo man damit mit den I/O-Pins ein 150 MHz-Signal erzeugen kann, wenn ich das richtig in Erinnerung habe.

Für AVR-basierte Arduino-Boards kann man die digital*Fast-Funktionen wohl als Library herunterladen.

Ich weiß aber nicht, ob sich schon jemand erbarmt hat, diese sinnvollen Funktionen auch für ESP32, ARM, CH32 usw. zu schreiben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren