Forum: Mikrocontroller und Digitale Elektronik wie startet man einen ESP32?


von Egon M. (knut735)


Lesenswert?

Hallo,

mit vieler Mühe und freundlicher Beihilfe aus dem Forum hier ist es mir 
schließlich gelungen, zunächst ein Beispielsketch vollständig zu 
kompilieren und auf einen ESP32 WROOM 32 hochzuladen.

Daß der Sketch erfolgreich hochgeladen war, entnehme ich dem Ausdruck am 
Ende der Arduino-IDE-Ausgabe:
1
 Leaving...
2
Hard resetting via RTS pin...

Nun hatte ich erwartet, daß der Sketch so abläuft, wie er soll. Aber das 
geschah keineswegs, vielmehr lief unentwegt der nachfolgende Text über 
den seriellen Monitor:
1
 rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
2
configsip: 0, SPIWP:0xee
3
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
4
mode:DIO, clock div:1
5
load:0x3fff0030,len:1344
6
load:0xffbf0a00,len:-1
7
1162 mmu set 00010000, pos 00010000
8
1162 mmu set 00020000, pos 00020000
9
1162 mmu set 00030000, pos 00030000
10
1162 mmu set 00040000, pos 00040000
11
1162 mmu set 00050000, pos 00050000
12
1162 mmu set 00060000, pos 00060000
13
1162 mmu set 00070000, pos 00070000
14
1162 mmu set 00080000, pos 00080000
15
1162 mmu set 00090000, pos 00090000
16
1162 mmu set 000a0000, pos 000a0000
17
1162 mmu set 000b0000, pos 000b0000
18
1162 mmu set 000c0000, pos 000c0000
19
1162 mmu set 000d0000, pos 000d0000
20
1162 mmu set 000e0000, pos 000e0000
21
1162 mmu set 000f0000, pos 000f0000
22
1162 mmu set 00100000, pos 00100000
23
ets Jun  8 2016 00:22:57

Man konnte ihn mit der Resettaste anhalten, aber er lief nach Loslassen 
sofort weiter. Lediglich mit der Boottaste blieb er stehen und es wurde 
die Bereitschaft zu neuen Download angezeigt.

Wie kann ich denn das Teil dazu bringen, nun endlich den Sketch 
auszuführen?

Gruß

Knut735

: Bearbeitet durch User
von N. M. (mani)


Lesenswert?

Hey Knut,

Egon M. schrieb:
> Nun hatte ich erwartet, daß der Sketch so abläuft, wie er soll.

Ja solche Erwartungshaltungen kann man haben. Gerade am Anfang stimmen 
die häufig nicht.

Egon M. schrieb:
> Aber das geschah keineswegs, vielmehr lief unentwegt der nachfolgende
> Text über den seriellen Monitor:

Das sind die Startupmeldungen.
Wenn sich die wiederholen ist das normalerweise ein Zeichen dafür dass 
der Core neu startet/resettet.
Gründe dafür gibt es einige.
Von defektem Code bis zum zuschlagen des Watchdog oder ähnlichem.
Deshalb steht da normalerweise auch der reset Grund mit dran.

Zeig also Mal mehr von der Ausgabe. Also über mehrere Wiederholungen 
hinweg.

Egon M. schrieb:
> Man konnte ihn mit der Resettaste anhalten

Das kann man immer. Dafür ist der da.

Egon M. schrieb:
> Lediglich mit der Boottaste blieb er stehen und es wurde die
> Bereitschaft zu neuen Download angezeigt.

Klar, dann springt der Controller in den Boot Mode und führt nicht dein 
Programm aus.
Das wäre dann eher ein Zeichen dafür dass es an deinem hineingeladenen 
Programm liegt und z.B. nicht an Störungen oder einer schlechten 
Versorgungsspannung.

Egon M. schrieb:
> Wie kann ich denn das Teil dazu bringen, nun endlich den Sketch
> auszuführen?

Lade Mal deinen Code und dein Binary hier hoch, dann kann man die 
Theorie bestätigen.

: Bearbeitet durch User
von Oliver R. (orb)


Lesenswert?

N. M. schrieb:
> Deshalb steht da normalerweise auch der reset Grund mit dran.

tut er doch :
rst:0x10 (RTCWDT_RTC_RESET)

Der Watchdog-Timer des Bootloaders hat zugeschlagen, er konnte in der 
vorgegebenen Zeit keinen Programmcode ausführen.

Das kann verschiedenste Gründe haben, Code nicht ausführbar, instabile 
Spannungsversorgung, Flash falsch patitioniert, falsche Einstellungen 
zum Flash, kein Flash vorhanden ....

von N. M. (mani)


Lesenswert?

Oliver R. schrieb:
> tut er doch :
> rst:0x10 (RTCWDT_RTC_RESET)

Stimmt 😅 5 ist einfach zu früh ☕

von Rainer W. (rawi)


Lesenswert?

Oliver R. schrieb:
> Flash falsch patitioniert

Mit Fremdworten ist das so eine Sache. Schreib besser einfach "falsch 
eingeteilt" wenn du damit Schwierigkeiten hast.

von Stefan F. (Gast)


Lesenswert?

Oliver R. schrieb:
> Das kann verschiedenste Gründe haben, Code nicht ausführbar, instabile
> Spannungsversorgung, Flash falsch patitioniert, falsche Einstellungen
> zum Flash, kein Flash vorhanden ....

Oder das Programm ist schlicht fehlerhaft.

von Fred F. (fred08151)


Lesenswert?

Oder einfach mal einen Beispielcode hochladen, von dem man weiss, dass 
er funktioniert. Tut er das, muss man seinen eigenen Code nochmal 
genauer ansehen. Die gröbsten Fehler zeigt dir die Arduino IDE ja schon 
beim überprüfen.

von MaWin O. (mawin_original)


Lesenswert?

Rainer W. schrieb:
>> Flash falsch patitioniert
>
> Mit Fremdworten ist das so eine Sache. Schreib besser einfach "falsch
> eingeteilt" wenn du damit Schwierigkeiten hast.

Der ESP-Flash wird halt partitioniert. Das ist der korrekte Begriff.

von Egon M. (knut735)


Lesenswert?

Hallo

Hier ist der Beispielcode, den ich benutze:
1
//GetChipID
2
/* The true ESP32 chip ID is essentially its MAC address.
3
This sketch provides an alternate chip ID that matches 
4
the output of the ESP.getChipId() function on ESP8266 
5
(i.e. a 32-bit integer matching the last 3 bytes of 
6
the MAC address. This is less unique than the 
7
MAC address chip ID, but is helpful when you need 
8
an identifier that can be no more than a 32-bit integer 
9
(like for switch...case).
10
11
created 2020-06-07 by cweinhofer
12
with help from Cicicok */
13
  
14
uint32_t chipId = 0;
15
16
void setup() {
17
  Serial.begin(115200);
18
}
19
20
void loop() {
21
  for(int i=0; i<17; i=i+8) {
22
    chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
23
  }
24
25
  Serial.printf("ESP32 Chip model = %s Rev %d\n", ESP.getChipModel(), ESP.getChipRevision());
26
  Serial.printf("This chip has %d cores\n", ESP.getChipCores());
27
  Serial.print("Chip ID: "); Serial.println(chipId);
28
  
29
  delay(3000);
30
}

Und hier die Ausgabe auf dem seriellen Monitor:
1
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
2
configsip: 0, SPIWP:0xee
3
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
4
mode:DIO, clock div:1
5
load:0x3fff0030,len:1344
6
load:0xffbf0a00,len:-1
7
1162 mmu set 00010000, pos 00010000
8
1162 mmu set 00020000, pos 00020000
9
1162 mmu set 00030000, pos 00030000
10
1162 mmu set 00040000, pos 00040000
11
1162 mmu set 00050000, pos 00050000
12
1162 mmu set 00060000, pos 00060000
13
1162 mmu set 00070000, pos 00070000
14
1162 mmu set 00080000, pos 00080000
15
1162 mmu set 00090000, pos 00090000
16
1162 mmu set 000a0000, pos 000a0000
17
1162 mmu set 000b0000, pos 000b0000
18
1162 mmu set 000c0000, pos 000c0000
19
1162 mmu set 000d0000, pos 000d0000
20
1162 mmu set 000e0000, pos 000e0000
21
1162 mmu set 000f0000, pos 000f0000
22
1162 mmu set 00100000, pos 00100000
23
ets Jun  8 2016 00:22:57

von MaWin O. (mawin_original)


Lesenswert?

Und nächste Salamischeibe:
- Wie baust du es?
- Buildparameter?
- Wie lädst du es auf den Controller?
- ...

von Stefan F. (Gast)


Lesenswert?

Probiere etwas einfacheres:
1
void setup() {}
2
3
void loop() { 
4
    Serial.println("Hallo");
5
    delay(3000);
6
}

von Rainer W. (rawi)


Lesenswert?

MaWin O. schrieb:
> Der ESP-Flash wird halt partitioniert. Das ist der korrekte Begriff.

Eben

von Stefan F. (Gast)


Lesenswert?

Stefan F. schrieb:
> Probiere etwas einfacheres...

Ich habe Serial.begin vergessen:
1
void setup() {
2
    Serial.begin(115200);
3
}
4
5
void loop() { 
6
    Serial.println("Hallo");
7
    delay(3000);
8
}

von Egon M. (knut735)


Lesenswert?

Hallo,

Es wird nicht besser. Ich hatte noch #include "Arsuino.h" und 
Serial.begin(115200); eingefügt, aber der serielle Monitor wird geflutet 
mit
1
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
2
configsip: 0, SPIWP:0xee
3
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
4
mode:DIO, clock div:1
5
load:0x3fff0030,len:1344
6
load:0xffbf0a00,len:-1
7
1162 mmu set 00010000, pos 00010000
8
1162 mmu set 00020000, pos 00020000
9
1162 mmu set 00030000, pos 00030000
10
1162 mmu set 00040000, pos 00040000
11
1162 mmu set 00050000, pos 00050000
12
1162 mmu set 00060000, pos 00060000
13
1162 mmu set 00070000, pos 00070000
14
1162 mmu set 00080000, pos 00080000
15
1162 mmu set 00090000, pos 00090000
16
1162 mmu set 000a0000, pos 000a0000
17
1162 mmu set 000b0000, pos 000b0000
18
1162 mmu set 000c0000, pos 000c0000
19
1162 mmu set 000d0000, pos 000d0000
20
1162 mmu set 000e0000, pos 000e0000
21
1162 mmu set 000f0000, pos 000f0000
22
1162 mmu set 00100000, pos 00100000
23
ets Jun  8 2016 00:22:57

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Ist die Stromversorgung sicher in Ordnung? Zeige mal Fotos vom Aufbau.

von Egon M. (knut735)


Lesenswert?

Da ist nur ein USB-Anschluß dran, sonst nichts.
Ob das Teil vielleicht einen Schaden hat?

VG
Knut735

von MaWin O. (mawin_original)


Lesenswert?

Egon M. schrieb:
> Ob das Teil vielleicht einen Schaden hat?

Sicher nicht. Dir fehlt es eher an systematischer Analysefähigkeit.
Liefere doch mal die restlichen Salamischeiben.

von Egon M. (knut735)


Lesenswert?

Vielleicht ist das Teil wirklich defekt; ich habe einen ESP32 WROVER 
angeschlossen (allerdings mit anderem USB-Kabel (3.0)), da funktionier 
Dein Sketch.

VG

von Egon M. (knut735)


Lesenswert?

MaWin O. schrieb:
> Und nächste Salamischeibe:
> - Wie baust du es?
z.Zt. ist da nur das nackte Teil mit einem USB-Kabel dran
> - Buildparameter?
Ich benutze Arduino-IDE, da hat man auf so etwas keinen Einfluß
> - Wie lädst du es auf den Controller?
Arduino-IDE

von Joachim B. (jar)


Lesenswert?

Egon M. schrieb:
> #include "Arsuino.h"

Egon M. schrieb:
> Ich benutze Arduino-IDE

ach

von MaWin O. (mawin_original)


Lesenswert?

Egon M. schrieb:
> Vielleicht ist das Teil wirklich defekt;

Unwahrscheinlich.

> ich habe einen ESP32 WROVER
> angeschlossen (allerdings mit anderem USB-Kabel (3.0)), da funktionier
> Dein Sketch.

Eher hast du halt ein Programm erstellt, was nur auf dem WROVER und 
nicht auf dem WROOM funktioniert, weil die halt unterschiedlich sind 
(z.b. SRAM)

von Egon M. (knut735)


Lesenswert?

Ich habe die kurze Programmsequenz von Stefan ausprobiert. Die ist doch 
sicher so einfach, daß es auf WROVER und auch auf WROOM laufen sollte. 
Bei mir läuft sie auf WROVER, aber nicht auf dem WROOM.

Was die Stromversorgung angeht, die erfolgt auf dem WROVER mit USB 3.0 
und die auf dem WROOM mit verschiedenen Mikro-USB-Kabeln, die alle zur 
Speisung von Leonardo eingesetzt sind und dort keine Probleme bereiten.

Ich habe neue WROOM's von AZ-Delivery bestellt, mal sehen, ob es da 
besser geht

VG
knut735

von Egon M. (knut735)


Lesenswert?

Joachim B. schrieb:
> Egon M. schrieb:
>> #include "Arsuino.h"
>
> Egon M. schrieb:
>> Ich benutze Arduino-IDE
>
> ach

Schreibfehler. Im Sketch steht es richtig! Ich wollte es verbessern, 
aber die Beabeitungsfunktion funktioniert hier nicht immer richtig.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Egon M. schrieb:
> Da ist nur ein USB-Anschluß dran, sonst nichts.

Nimm ein anderes USB Kabel und einen anderen Port am PC. Am Ende vom USB 
Kabel kommt manchmal nicht genug Strom an.

Oder versorge es mit einem zusätzlichen 3,3V Netzteil.

von Max D. (max_d)


Lesenswert?

Egon M. schrieb:
> Bei mir läuft sie auf WROVER, aber nicht auf dem WROOM.

Was hast du denn in deinen Compiler-Einstellungen drinne ? Bei arduino 
kann man ja afaik auch irgendwie auswählen welches board man hat und 
wenn er anfängt einen nicht vorhandenen psram zu suchen ist es kein 
wunder wenn er ned will...

von Egon M. (knut735)


Lesenswert?

Max D. schrieb:
> Was hast du denn in deinen Compiler-Einstellungen drinne ? Bei arduino
> kann man ja afaik auch irgendwie auswählen welches board man hat

Das ist doch das Allererste, was man tut.

Ich habe übrigens alle möglichen USB-Kabel und auch andere USB-Stecker 
am PC ausprobiert. Üblicherweise benutze ich einen Hub mit eigener 
Stromversorgung.
Die Kabel benutze ich auch für Arduinos verschiedener Typen als 
alleinige Stromversorgung.

Hat bei dem WROOM alles nichts gebracht. Was mich aber wundert, ist das 
ungewöhliche Verhalten der LED: wenn man die USB-Verbindung herstellt, 
blinkt die LED, wo man doch ein rotes Dauerlicht erwartet.
Also doch ein Schaden?

VG

knut735

von MaWin O. (mawin_original)


Lesenswert?

Egon M. schrieb:
> Also doch ein Schaden?

Nein. Ganz bestimmt nicht.
Es ist immer ein Nutzerproblem.

Warum sollte das Board defekt sein?
Ich habe noch nie ein defektes Board oder einen defekten Mikrocontroller 
gehabt.

von Joachim B. (jar)


Lesenswert?

MaWin O. schrieb:
> Warum sollte das Board defekt sein?
> Ich habe noch nie ein defektes Board oder einen defekten Mikrocontroller
> gehabt.

du Glücklicher, ich habe schon öfter aus China defektes -> LCD Nokia 
3210 oder merkwürdiges bekommen -> wie schon mal geschrieben von 5 ESP32 
wemos lolin funktionierte nur einer ab Lieferung, 4 musste ich mit 10µF 
an EN nach GND tunen.

: Bearbeitet durch User
von MaWin O. (mawin_original)


Lesenswert?

Joachim B. schrieb:
> Nokia 3210

Ich bestelle in der Regel Elektronik, die neuer als 30 Jahre ist.

von Egon M. (knut735)


Lesenswert?

Hallo

MaWin O hatte recht (natürlich abgesehen von der Aussage über nie 
defekte MCU's) und die anderen, die an der USB-Verbindung zweifelten, 
auch: es lag an der Stromversorgung, die allein durch den USB-Anschluß 
nicht gewährleistet ist. Ich habe an den 3,3-V-Pin ca 3,3 V angelegt und 
nun funktioniert es; es laufen nicht mehr ununterbrochen die 
Statusmeldungen über den seriellen Monitor, jetzt wird das angezeigt, 
was das Programm vorgibt.

Vielen Dank für Eure Hilfe!

VG

knut735

von MaWin O. (mawin_original)


Lesenswert?

Egon M. schrieb:
> natürlich abgesehen von der Aussage über nie
> defekte MCU's

Weil deine MCU nicht defekt ist, schlussfolgerst du das nun?
Interessant.

Ich bleibe dabei: Wenn man MCUs nicht durch massive Überspannung 
misshandelt oder mutwillig per Fuse totflasht, sterben sie nie.

Die kaputte MCU bei Fehlverhalten ist das Hardwareäquivalent zum 
kaputten Compiler bei Fehlverhalten. Es passiert praktisch gesehen so 
selten, dass man es praktisch direkt ausschließen kann.

von Egon M. (knut735)


Lesenswert?

MaWin O. schrieb:
> Weil deine MCU nicht defekt ist, schlussfolgerst du das nun?
> Interessant.

Ja.

Ich habe heute die bestellten ESP32 WROOM 32 erhalten, genau wie gehabt. 
Einen davon habe ich probeweise ebenso betrieben, wie den besprochenen 
aus diesem Thread, nämlich mit dem gleichen USB-Kabel am gleichen Port 
mit dem gleichen Programm.

Wenn Du recht hättest, sollten wieder pausenlos die bekannten 
Statusmeldungen über den seriellen Schirm laufen und auf unentwegte 
Resets hindeuten. So ist es aber nicht. Das Teil liefert auf Anhieb 
genau das, was das Programm vorschreibt.

Meine erste MCU hatte also doch einen Schaden, einen kleinen zwar, der 
sich mit etwas externem Strom beheben ließ, aber immerhin. Im Manual 
steht davon nichts. Man sollte nicht immer alles auf den unbedarften 
Nutzer schieben.

VG

knut735

von Monk (roehrmond)


Lesenswert?

Egon M. schrieb:
> Meine erste MCU hatte also doch einen Schaden, einen kleinen zwar, der
> sich mit etwas externem Strom beheben ließ, aber immerhin.

Die Schlussfolgerung ist höchstwahrscheinlich falsch.

Ohne die extra Stromversorgung betreibst du die Module wahrscheinlich 
außerhalb ihrer Spezifikation. Ob und wie lange sie so funktionieren, 
ist reine Glückssache. Da können sonst harmlose Material-Streuungen und 
Temperatur-Schwankungen plötzlich einen großen Effekt haben-

Bei den ESP Chips ist eine potente stabile Stromversorgung das 
allerwichtigste. Ich behaupte, dass mehr als 90% aller Fehlfunktionen 
von mangelhafter Stromversorgung her kommen.

> Im Manual steht davon nichts

Du meinst wohl das Referenzhandbuch und die Application Notes. Dort gibt 
es klare Angaben zur Stromversorgung. Bei deinem USB Kabel kommen 
mehrere Faktoren zusammen, die in Summe zu einer zu instabilen 
Stromversorgung führen können. Deswegen haben externe Festplatten (die 
via USB versorgt werden) ein sehr kurzes sehr dickes Anschlusskabel.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.