Can't program more than one ESP32-C3

New to ESP32-C3 although I’ve used Seeed RP2040 before. I bought 20 devices for a drum machine project, 16 of the boards will have identical code with just a MIDI channel number change and a PROGMEM array of different drum sounds. I successfully programmed one board a few days ago, tested the drum sounds and it work fine, so today I wanted to program more cards just to test them and they will not program with the code, everything happens as it should, the IDE finishes with the reset messages as per normal, but when I install the card in my test circuit it just clicks every secord or so like blink is running. I actually loaded the setup page blink without any problems to test my method.

So one card out of 6 works currently and I’m losing hope on this project. I have another 14 to test, but why bother when 5 don’t work.

Sketch uses 553948 bytes (17%) of program storage space. Maximum is 3145728 bytes.
Global variables use 16476 bytes (5%) of dynamic memory, leaving 311204 bytes for local variables. Maximum is 327680 bytes.
esptool.py v4.5.1
Serial port COM5
Connecting…
Chip is ESP32-C3 (revision v0.4)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 34:85:18:07:cf:b0
Uploading stub…
Running stub…
Stub running…
Changing baud rate to 921600
Changed.
Configuring flash size…
Flash will be erased from 0x00000000 to 0x00003fff…
Flash will be erased from 0x00008000 to 0x00008fff…
Flash will be erased from 0x0000e000 to 0x0000ffff…
Flash will be erased from 0x00010000 to 0x0009afff…
Compressed 13152 bytes to 9473…
Writing at 0x00000000… (100 %)
Wrote 13152 bytes (9473 compressed) at 0x00000000 in 0.2 seconds (effective 463.9 kbit/s)…
Hash of data verified.
Compressed 3072 bytes to 137…
Writing at 0x00008000… (100 %)
Wrote 3072 bytes (137 compressed) at 0x00008000 in 0.1 seconds (effective 434.3 kbit/s)…
Hash of data verified.
Compressed 8192 bytes to 47…
Writing at 0x0000e000… (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 672.7 kbit/s)…
Hash of data verified.
Compressed 567296 bytes to 264531…
Writing at 0x00010000… (5 %)
Writing at 0x00014708… (11 %)
Writing at 0x0001993a… (17 %)
Writing at 0x0001f0e2… (23 %)
Writing at 0x00024e2b… (29 %)
Writing at 0x0003cd47… (35 %)
Writing at 0x0004ac88… (41 %)
Writing at 0x000599e9… (47 %)
Writing at 0x0006408f… (52 %)
Writing at 0x0006affb… (58 %)
Writing at 0x0007144d… (64 %)
Writing at 0x00078ec8… (70 %)
Writing at 0x0007ed46… (76 %)
Writing at 0x00084e8c… (82 %)
Writing at 0x0008ac88… (88 %)
Writing at 0x00092858… (94 %)
Writing at 0x000998ad… (100 %)
Wrote 567296 bytes (264531 compressed) at 0x00010000 in 4.8 seconds (effective 949.8 kbit/s)…
Hash of data verified.

Leaving…
Hard resetting via RTS pin…

Maybe you can try brushing the firmware again and pay attention to the tips in this Wiki as you go along:

Thanks for the reply, I checked my schematics and I have an encoder on D9, set as an input_pullup, so that should not be a problem, however on D8 (GPIO8) I had a trigger input which needs to be low, so I moved that to D2 which was unused and added a 10k resistor from D8 to +3.3v. D6 was was not connected to anything as I only use RX on D7 for MIDI input.

Finally I cut down my code function by function and everything was working until I eanbled the encoder reads in the loop, then it fell to pieces. I have moved D9 of the encoder to D1 and this has resolved the boot loading and finally I have two working cards, I will try more.

A further update, I tried a brand new card with the previously working code, encoder moved etc and it still wouldn’t program (or should I say function) until I commented out the encoder routine. So I rewrote the routine as the original is not my code. I put in some working encoder code I had from another project that I only tetsed a few days ago. This worked straight away, the device flashed and functioned immediately, I tried another brand new one and it was ok too.

Thanks for your help

1 Like