Forum: Mikrocontroller und Digitale Elektronik Seeed Xiao Esp32c3 lässt sich nicht mehr flashen


von Karl-Heinz V. (khvolk)


Lesenswert?

Ich habe einen Xiao Esp32c3 mit der Arduino IDE zum Test programmiert 
und dummerweise einen Counter hochgezählt (mit Ergebnis auf Serial) ohne 
eine Pause zwischen den Ausgaben vorzusehen. Nun kann ich kein neues 
Programm auf den Controller flashen. Es kommt nur die lapidare Ausgabe:

A fatal error occurred: No serial data received.

wenn man das versucht. Im Monitor sehe ich aber den Controller nach 
einem Reset wie ein Wilder hochzählen.

esptool.py --chip esp32c3 --port /dev/ttyACM0 --baud 115200 erase_flash

führt auch zu keinem Resultat.

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Hat dein Board einen "Boot" Taster? Den beim Einstecken gedrückt halten, 
dann startet nur der Bootloader und nicht dein Counter.

Wenn nicht: GPIO9 auf GND ziehen beim Einschalten. Da ist der Taster 
sonst dran.

: Bearbeitet durch User
von Karl-Heinz V. (khvolk)


Lesenswert?

Danke! Die Kombination 8 auf high und 9 auf low hat es gebracht. Die 
Boot-Taste allein hatte nichts geholfen.

von Dieter S. (hotsystems)


Lesenswert?

Welches Board nutzt du ?
Wenn das: 
https://eckstein-shop.de/Seeed-Studio-XIAO-ESP32C3-Tiny-MCU-Board-with-Wi-Fi-and-BLE
dein Board ist, dann sind doch Tasten für Reset und Boot vorhanden.
Und dann funktioniert das Flashen immer mit folgenden Tastendrücken:

Reset drücken und festhalten.
Boot drücken und festhalten.
Reset loslassen.
Boot loslassen.
Flashen....danach Reset drücken und er läuft.

von Karl-Heinz V. (khvolk)


Lesenswert?

Habe ich wohl nicht in dieser Reihenfolge versucht (was schwierig bei 
diesen Fitzel-Tasten ist). Kann ich natürlich mal versuchen, wenn es 
nochmal Probleme gibt.

von Dieter S. (hotsystems)


Lesenswert?

Ja, fummelig ist es.
Allerdings muss man das bei jedem Flashen so machen.

Deshalb spiele ich da immer sofort WLan und OTA drauf.
Dann braucht man nix mehr "fummeln" ;)

von Karl-Heinz V. (khvolk)


Lesenswert?

Ich habe gerade mal versucht, meinen Fehler zu reproduzieren. Das geht 
tatsächlich. Wenn das Programm mit 115200 Bit/sek einen Zähler in 
Dauerschleife ausgibt, kann man nicht mehr flashen (weder Arduino IDE 
1.8.19 noch PlatformIO und Code).

Mit den Mini-Tasten auf dem Board kann man sich nicht helfen. Normal 
braucht man die ja nicht. Die serielle Schnittstelle erledigt den Upload 
automatisch. Die oben beschriebene Tastenfolge führt nicht zum Erfolg.

Allein die Kombination GPIO 8 auf HIGH und GPIO 9 auf LOW hilft, den 
ESP32C3 neu zu flashen.

von Dieter S. (hotsystems)


Lesenswert?

Karl-Heinz V. schrieb:
> Mit den Mini-Tasten auf dem Board kann man sich nicht helfen.

Ok, das mag tatsächlich bei deinem "eingebauten Problem" nicht helfen.

Und ich habe es eben noch mal mit meinem XIAO getestet, der braucht 
keinen Tastendruck zum Flashen.
Meine ESP32-C3 Super Mini reagieren da offensichtlich etwas anders. Das 
erste Flashen geht nur, wenn ich die Tasten wie oben betätige.
Danach geht das Flashen auch ohne jeglichen Tastendruck.

von Εrnst B. (ernst)


Lesenswert?

Dieter S. schrieb:
> Danach geht das Flashen auch ohne jeglichen Tastendruck.

Das ist eine Eigenheit des Arduino-Frameworks für den ESP32C3.

In der USB-Serial-Implementation (USBCDC.cpp) ist eingebaut, dass er 
einen Reset in den Bootloader ausführt wenn entsprechend an den 
DTR/RTS-Bits gewackelt wird.

Lässt sich in deinem Sketch auch mit "Serial.enableReboot(false);" 
abschalten.

von Dieter S. (hotsystems)


Lesenswert?

OK...danke für die Info.
Das mit den Tasten fällt eh weg, wenn OTA drauf ist.

von Frank O. (frank_o)


Lesenswert?

Εrnst B. schrieb:
> Den beim Einstecken gedrückt halten,
> dann startet nur der Bootloader und nicht dein Counter.

Ich wollte die Dinger schon in die Ecke schmeißen.
Eigentlich müsste ich an meinem Projekt weiter arbeiten, aber ich habe 
im Moment keinen Kopf dafür und da am Freitag die ESP32C3 Super mini 
angekommen sind, wollte ich die testen.
Ging sogar unter Arduino recht gut. Nur, einmal Serial Monitor und schon 
konnte ich nichts mehr ändern.
Mittlerweile kann ich die auch schon flashen.
Schön klein. Lohnt sich vielleicht doch, sich in der Zukunft damit zu 
befassen.
Danke für deinen Beitrag. Der hat meine Stimmung wieder auf normales 
Level angehoben.
Aber bis man das richtige Board gefunden hat, dann funktioniert die Led 
an Pin 8. Wenn du LED_BUILTIN nimmst, macht das Teil alles, nur nicht 
das was es soll. Die Led geht aber bei Low auf High und umgekehrt.

Hier noch der Sketch. Damit sich nicht alle die Zähne ausbeißen müssen.
1
/*
2
  Blink
3
4
  Turns an LED on for one second, then off for one second, repeatedly.
5
6
  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
7
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
8
  the correct LED pin independent of which board is used.
9
  If you want to know what pin the on-board LED is connected to on your Arduino
10
  model, check the Technical Specs of your board at:
11
  https://www.arduino.cc/en/Main/Products
12
13
  modified 8 May 2014
14
  by Scott Fitzgerald
15
  modified 2 Sep 2016
16
  by Arturo Guadalupi
17
  modified 8 Sep 2016
18
  by Colby Newman
19
20
  This example code is in the public domain.
21
22
  https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink
23
*/
24
25
/******************************************
26
*******************************************
27
*  esp32-c3 super mini = XIAO_ESP32C3     *
28
*  LED ist an Pin8 angeschlossen          *
29
*******************************************/
30
31
int LED = 8;
32
void setup() {
33
  pinMode(LED, OUTPUT);
34
  Serial.begin(9600);
35
}
36
37
38
void loop() {
39
40
  digitalWrite(LED, HIGH);  // turn the LED on (HIGH is the voltage level)
41
  Serial.println("Led ist aus!");
42
  delay(1000);
43
  digitalWrite(LED, LOW);
44
  Serial.println("Led ist an!");
45
  delay(1000);
46
}

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.