mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-22 21:23:07 +03:00
58 lines
1.6 KiB
Markdown
58 lines
1.6 KiB
Markdown
# 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.
|
|
|
|
## Hardware
|
|
|
|
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](http://www.atmel.com/images/doc0943.pdf) 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
|
|
--------|------------
|
|
GPIO12 | MISO
|
|
GPIO13 | MOSI
|
|
GPIO14 | SCK
|
|
any* | RESET
|
|
|
|
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.
|
|
|
|
## Usage
|
|
|
|
See the included example. In short:
|
|
|
|
```arduino
|
|
|
|
// 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 <kiril@robotev.com>.
|