wie startet man einen ESP32?

OP #7368584
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

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

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

OP #7368852
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
OP #7368991
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
OP #7369023
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

OP #7369309
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

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

OP #7370354
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

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

OP #7370564
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

Gast #7370942
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.

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