ESP32 Arduino Cheat Sheet (aktuell für BSP3.x)

OP #7711022
Lesenswert?

Hallo zusammen,

für meine Schüler habe ich gerade mein Arduino Cheat Sheet für den ESP32 / ESP32-S3 überarbeitet. Beim ADC, Timer und LEDC sind die geänderten API-Funkionen vom Board Support V3.x bereits drin.

  • Wer es nutzen will, viel Spass damit
  • Wer Fehler findet bitte hier melden
  • Wer weitere Ergänzungen wünscht - wenn es der Platz zulässt ;-)

Aus Platzgründen sind jetzt nicht sämtliche API-Funktionen erklärt. Seltener genutzen Kram kann man in der Espressif-API nachlesen (ist verlinkt).

tschuessle Bernhard

Angehängte Dateien:
OP #7711111
Lesenswert?

Niklas G. schrieb:

PROGMEM beim ESP32?

Ja, kann man sich beim ESP sparen. Danke für den Hinweis. Es passiert aber auch nichts "tragisches", PROGMEM wird vom Compiler ignoriert (aber auch nicht als const umgesetzt!). Hab dazu mal ein mini Testprogramm geschrieben:

1
#define longstring "das ist ein langer text, der jetzt irgendwo abgespeichert werden wird."
2
//char longstring[]= "das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.";
3
//const char longstring[]= "das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.";
4
//PROGMEM char longstring[]= "das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.";
5
//String longstring = "das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.";
6
//const char longstring[]= R"xxxxxx(das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.)xxxxxx";
7

8
void setup() {
9
  // put your setup code here, to run once:
10
  Serial.begin(115200);
11
  Serial.print(longstring);
12
}
13

14
void loop() {
15
  // put your main code here, to run repeatedly:
16
  delay(1);
17
}

Ergebnis: #define, const char und const char mit Rawliteral ist identisch

char, PROGMEM char und char mit Rawliteral ist identisch

String ist beim RAM geringfügig kleiner, beim ROM größer

1
#define longstring "das ist ein langer text, der jetzt irgendwo abgespeichert werden wird."
2
Sketch uses 279357 bytes (21%) of program storage space. Maximum is 1310720 bytes.
3
Global variables use 20200 bytes (6%) of dynamic memory, leaving 307480 bytes for local variables. Maximum is 327680 bytes.
4

5
const char longstring[]= "das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.";
6
Sketch uses 279357 bytes (21%) of program storage space. Maximum is 1310720 bytes.
7
Global variables use 20200 bytes (6%) of dynamic memory, leaving 307480 bytes for local variables. Maximum is 327680 bytes.
8

9
const char longstring[]= R"xxxxxx(das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.)xxxxxx";
10
Sketch uses 279357 bytes (21%) of program storage space. Maximum is 1310720 bytes.
11
Global variables use 20200 bytes (6%) of dynamic memory, leaving 307480 bytes for local variables. Maximum is 327680 bytes.
12

13

14
char longstring[]= "das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.";
15
Sketch uses 279373 bytes (21%) of program storage space. Maximum is 1310720 bytes.
16
Global variables use 20280 bytes (6%) of dynamic memory, leaving 307400 bytes for local variables. Maximum is 327680 bytes.
17

18
PROGMEM char longstring[]= "das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.";
19
Sketch uses 279373 bytes (21%) of program storage space. Maximum is 1310720 bytes.
20
Global variables use 20280 bytes (6%) of dynamic memory, leaving 307400 bytes for local variables. Maximum is 327680 bytes.
21

22
char longstring[]= R"xxx(das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.)xxx";
23
Sketch uses 279373 bytes (21%) of program storage space. Maximum is 1310720 bytes.
24
Global variables use 20280 bytes (6%) of dynamic memory, leaving 307400 bytes for local variables. Maximum is 327680 bytes.
25

26

27
String longstring = "das ist ein langer text, der jetzt irgendwo abgespeichert werden wird.";
28
Sketch uses 279389 bytes (21%) of program storage space. Maximum is 1310720 bytes.
29
Global variables use 20216 bytes (6%) of dynamic memory, leaving 307464 bytes for local variables. Maximum is 327680 bytes.
OP #7711122
Lesenswert?

Alexander schrieb:

RTC_DATA_ATTR könnte noch mit drauf. oder ist das auch sinnlos?

Das ist sehr speziell. Wenn man Wake-Up intensiv nutzt, muss man sowieso noch in die vollständige API reinschauen. Das hab ich nicht mal in meinen Beispielen drin (könnte ich vielleicht mal an der Dualen Hochschule nutzen). Danke für den Hinweis.

Genauso verzichte ich bei den Schülern bei ISR auf die etwas performantere Version mit IRAM_ATTR... Wer mit ISRs auf Kriegsfuß steht, dem hilft das auch wenig weiter.

OP #7711130
Lesenswert?

Alexander schrieb:

mein Drucker kann es nicht ausdrucken, es kommt nur ein Ausschnitt raus

Im PDF-Reader beim Drucken auf "Skalierung auf Druckbereich" auswählen. Das Original ist DIN-A0 (war so bei der Vorlage, muss das mal bei Gelegenheit wenigstens auf A3 verkleinern). Wenn ich das in LibreOffice als PDF konvertiere bleiben die Links klickbar, aber die Blattgröße ist original. Wenn ich es in eine PDF-Datei drucke, dann ist die 20x so groß (auch wenn es nur A4 Format ist) und die Links sind nicht mehr anklickbar :-(

@all: das ist noch ein "Work in progress", 99% sind ok, aber es gibt sicher noch ein paar kleine Korrekturen ;-)

#7711261
Lesenswert?

Bernhard S. schrieb:

Manfred P. schrieb:

Bernhard S. schrieb:

"Work in progress" Was ist das Problem? Bei mir wird der Text vollständig angezeigt. Welcher Browser/PDF-Reader wurde da benutzt?

Sumatra 3.1.2, Foxit Reader zeigt "Variablen" vollständig.

Bei dir fehlt auch die Hintergrundfarbe...

Hintergrund ist weiß, aber im Sumatra fehlen die blauen Rahmen.

Im Dateiheader steht "PDF-1.7". Also nichts für ältere Systeme, das muss heutzutage so sein.

OP #7711268
Lesenswert?

Manfred P. schrieb:

Sumatra 3.1.2, Foxit Reader zeigt "Variablen" vollständig.

Vielleicht mal Updaten??

Latest release: 3.5.2

Bei dir fehlt auch die Hintergrundfarbe...

Hintergrund ist weiß, aber im Sumatra fehlen die blauen Rahmen.

Die blauen Rahmen sind der Hintergrund. Darüber liegen weiße abgerundete Rechtecke... Irgend was bekommt Sumatra da mit den Layern nicht auf die Reihe.

Im Dateiheader steht "PDF-1.7". Also nichts für ältere Systeme, das muss heutzutage so sein.

Hab dir die Datei nochmal mit Option PDF/A exportiert. Stimmt damit die Darstellung? Ich kann auf Wunsch aber auch die odg-Datei hier reinstellen.

Angehängte Dateien:
#7711286
Lesenswert?

Bernhard S. schrieb:

Sumatra 3.1.2, Foxit Reader zeigt "Variablen" vollständig.

Vielleicht mal Updaten??

Latest release: 3.5.2

"Latest version that support XP is 3.1.2"

Hab dir die Datei nochmal mit Option PDF/A exportiert. Stimmt damit die Darstellung?

Nein.

Ich kann auf Wunsch aber auch die odg-Datei hier reinstellen.

Danke, aber mache Dir keine Mühe, mit Foxit passt es ja und Arduino mit ESP32 läuft unter XP sowieso nicht.

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