I've designed a simple WS2812B LED Controller utilizing the ATMega328p and an ESP8266 to connect to WiFi. The two are supposed to be communicating over UART. I've made a mistake of not testing the programming capabilities of the ESP8266 when the UART is connected to the AVR. When I connect the ESP to the PC the standard reset data garbage as well as a pre-programmed ready message shows up on the Serial Monitor confirming the TX is working. I'm however unable to re-program the ESP, even when the AVR's reset is being pulled low. I do not own an oscilloscope, so I'm unable to probe the RX pin of the ESP. I have not soldered the R9 resistor as my programmer is 3.3V, not 5V like the AVR.


  • \$\begingroup\$ You should scale down the resistors in your voltage divider by a factor of at least 20 or so, even with the shunt element missing 100K in series is a lot for a serial link. Holding the ATmega in reset should work; to prove it isn't some other problem desolder the ATmega from one of the boards or build one up without it or duplicate the rest of the circuit around the ESP8266 on a breadboard. Are you sure you are properly doing all the pin-strapping needed to enter programming mode. \$\endgroup\$ – Chris Stratton Jul 29 at 21:24
  • \$\begingroup\$ You could also just temporarily feed your PC's signal to the ESP's side of R8 as a test. \$\endgroup\$ – Chris Stratton Jul 29 at 21:26
  • \$\begingroup\$ @ChrisStratton I'm connecting the IO0 jumper through to GND. With IO2 strapped HIGH and IO15 LOW it should be in programming mode. I'll build just the ESP part and post an update. Thanks for the tip on the divider resistors as well. \$\endgroup\$ – Krzysztof 'RouNdeL' Zdulski Jul 29 at 21:38
  • \$\begingroup\$ @ChrisStratton, why hold the ATmega in reset? \$\endgroup\$ – Juraj Jul 30 at 11:36

After replacing R8 with a 0Ω jumper (R9 still removed) whilst holding the AVR in reset I've managed to successfully reprogram the ESP. Thanks to @ChrisStratton

  • \$\begingroup\$ why hold the atmega in reset? \$\endgroup\$ – Juraj Jul 30 at 11:35
  • \$\begingroup\$ If I do not hold it in reset the pins are being pulled up high, by the ATMega \$\endgroup\$ – Krzysztof 'RouNdeL' Zdulski Jul 30 at 11:36
  • \$\begingroup\$ do you initialize UART of ATmega? \$\endgroup\$ – Juraj Jul 30 at 11:37
  • \$\begingroup\$ No I don't. The ATMega has not yet been programmed \$\endgroup\$ – Krzysztof 'RouNdeL' Zdulski Jul 30 at 11:38
  • \$\begingroup\$ then why would be the pins puled-up? \$\endgroup\$ – Juraj Jul 30 at 11:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.