Use a Raspberry Pi Zero as a host to do In-Circuit Serial Programming of AVR’s. IOFF buffers are used to level convert to the targets voltage. It also allows the serial port to be used for serial bootload and has some switches to control looping of the upload.
Open Drain Voltage level converter for ICSP pins Open Drain Voltage level converter for serial bootload pins Swithchs for control of Shutdown, Bootload, and ICSP.
In-Circuit Serial Programing of AVR target 2V7 to 5V. Bootload programing of target (1.8V to 5V). Use your own R-Pi software to detect a switch (BCM13, BCM5) and run the uploader.
Table Of Contents
^3 Done: Design, Layout, BOM, WIP: Review*, Todo: Order Boards, Assembly, Testing, Evaluation. *during review the Design may change without changing the revision. connect MIS0 to MISO (zero should have been a 'O') ^2 Done: Design, Layout, BOM, Review*, Order Boards, Assembly, Testing, Evaluation. WIP: Todo: *during review the Design may change without changing the revision. try with an R-Pi zero rather than Uno with ISP sketch. set up the serial port for bootloading use. set up better for pogo pins.
Debugging and fixing problems i.e. Schooling
Setup and methods used for Evaluation
The board is 0.063 thick, FR4, two layer, 1 oz copper with ENIG (gold) finish.
Electrical Parameters (Typical)
74LVCO7A input are tolerant to 5.5V 74LVCO7A supply on target side can range from 1.65V to 5.5V When used for in-circuit programming consult the MCU datasheet for valid programming voltages (AVR seems to mostly be 2V7 to 5V).
Connectors or pogo pins are to be soldered by user
Check correct assembly and function with Testing
Bill of Materials
The BOM is a CVS file(s), import it into a spreadsheet program like LibreOffice Calc (or Excel), or use a text editor.
|M.||BRD SMD HDR|
|X.||BRD SMD HDR POGO|
|Z.||BRD SMD HDR POGO POL|
How To Use
This tool works with Makefiles. For example, I have build rules like “make linuxspi" or "make bootload" to upload my project firmware. I use a little Python (e.g., Icsp and Bootload) program to operate those rules when a button is pushed on this board.
Ether use connectors or spring probes (e.g., pogo pins ICT-100-T). I am not yet sure of a pleasant way to solder the probes, they are also expensive, but the advantage of not having to solder headers on my various boards makes this worth it to me.
The 74LVC07A has IOFF circuitry which disables the output to prevent damaging current backflow when the device is powered down since the buffer is powered by the target removing power from the target device after programming is both safe and advised.
The R-Pi host can use its hardware serial to upload firmware to a serial bootloader with a verity of methods: optiboot is "avrdude -c arduino," xboot is "avrdude -c avr109". It can also operate serial tools like an Uno loaded with ArduinoISP "avrdude -c stk500v1", ElTangas/STK2UPDI with "avrdude -c stk500v2", or even mraardvark/pyupdi. The pinout is like an FTDI_Friend.
Run the bootld.py script over an SSH connection in a folder with the Makefile bootload rule.
ICSP on SPI
The R-Pi host can also upload with "avrdude -c linuxspi" or bit-bang with "avrdude -c linuxgpio."
Run the icsp.py script over an SSH connection in a folder with the Makefile linuxspi rule.
In this case, it is Raspian; here are my notes.