AVR In-System Programming over WiFi for ESP8266
This library allows an ESP8266 module with the HSPI port available to become an AVR In-System Programmer.
The ESP8266 module connects to the AVR target chip via the standard 6-pin AVR "Recommended In-System Programming Interface Connector Layout" as seen in AVR910 among other places.
If the AVR target is powered by a different Vcc than what powers your ESP8266 chip, you must provide voltage level shifting or some other form of buffers. Exposing the pins of ESP8266 to anything larger than 3.6V will damage it.
Connections are as follows:
|ESP8266||AVR / SPI|
For RESET use a GPIO other than 0, 2 and 15 (bootselect pins), and apply an external pullup/down so that the target is normally running.
See the included example. In short:
// Create the programmer object ESP8266AVRISP avrprog(PORT, RESET_PIN) // ... with custom SPI frequency ESP8266AVRISP avrprog(PORT, RESET_PIN, 4e6) // Check current connection state, but don't perform any actions AVRISPState_t state = avrprog.update(); // Serve the pending connection, execute STK500 commands AVRISPState_t state = avrprog.serve();
License and Authors
This library started off from the source of ArduinoISP "sketch" included with the Arduino IDE:
ArduinoISP version 04m3 Copyright (c) 2008-2011 Randall Bohn If you require a license, see http://www.opensource.org/licenses/bsd-license.php Support for TCP on ESP8266 Copyright (c) Kiril Zyapkov <email@example.com>.