wie startet man einen ESP32?

OP #7368584

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

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.

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 ....

Gast

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.

OP

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
OP

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
OP

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

Gast

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.

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...

OP

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

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.

OP

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

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.

OP

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

Gast

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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 3 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.