Seeed Xiao Esp32c3 lässt sich nicht mehr flashen

OP #7554919
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.

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

OP #7556525
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.

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

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

#7668265
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
}

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