Program Raw Atmeg32u4 to Sparkfun Pro Micro 3V/8MHz Bootloader

Jul 30, 2018

Hardware:

FTDI ft232 Breakout board

ft232 board   ATMEGA32u4
3.3V          3.3V
GND           GND
TX            MOSI
CTS           MISO
RX            SCK
DTR           RST_N

All connections are on the end to the breakout board (except 3.3V)

Software:

Reference https://electronut.in/bootloader-atmega32u4/
Avrdude that has the ft232 driver

Addtion to avrdude-serjtag04n "avrdude.conf"
 programmer
  id    = "ftdi";
  desc  = "FT232R BitBang Programmer";
  type  = ft245r;
  miso  = 3; # cts
  sck   = 1; # rxd
  mosi  = 0; # txd
  reset = 4; # dtr
#  baudrate = 4800 ;
;

Sparkfun Pro Micro 3V bootloader
https://github.com/sparkfun/SF32u4_boards/tree/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro8.hex

Put "Caterina-promicro8.hex", "avrdude.conf" and avrdude-serjtag04n's "avrdude.exe" in the same directory.


Output


C:\avrdude-serjtag04n\bin>avrdude -P ft0 -c ftdi -p m32u4 -B 4800  -U lfuse:w:0xff:m  -U hfuse:w:0xd8:m  -U efuse:w:0xce:m
avrdude: BitBang OK
avrdude: pin assign miso 3 sck 1 mosi 0 reset 4
avrdude: drain OK

 ft245r:  bitclk 4800 -> ft baud 2400
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9587
avrdude: reading input file "0xff"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xff:
avrdude: load data lfuse data from input file 0xff:
avrdude: input file 0xff contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xd8"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xd8:
avrdude: load data hfuse data from input file 0xd8:
avrdude: input file 0xd8 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xce"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xce:
avrdude: load data efuse data from input file 0xce:
avrdude: input file 0xce contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified

avrdude: safemode: Fuses OK


avrdude done.  Thank you.


C:\avrdude-serjtag04n\bin>avrdude -P ft0 -c ftdi -p m32u4 -B 4800
avrdude: BitBang OK
avrdude: pin assign miso 3 sck 1 mosi 0 reset 4
avrdude: drain OK

 ft245r:  bitclk 4800 -> ft baud 2400
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9587

avrdude: safemode: Fuses OK

avrdude done.  Thank you.


C:\avrdude-serjtag04n\bin>avrdude -P ft0 -c ftdi -p m32u4 -B 4800 -U lfuse:r:low_fuse_val.hex:h -U hfuse:r:high_fuse_val.hex:h
avrdude: BitBang OK
avrdude: pin assign miso 3 sck 1 mosi 0 reset 4
avrdude: drain OK

 ft245r:  bitclk 4800 -> ft baud 2400
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9587
avrdude: reading lfuse memory:

Reading | ################################################## | 100% 0.02s

avrdude: writing output file "low_fuse_val.hex"
avrdude: reading hfuse memory:

Reading | ################################################## | 100% 0.02s

avrdude: writing output file "high_fuse_val.hex"

avrdude: safemode: Fuses OK

avrdude done.  Thank you.


C:\avrdude-serjtag04n\bin>avrdude -P ft0 -c ftdi -p m32u4 -B 4800 -U flash:w:Caterina-promicro8.hex
avrdude: BitBang OK
avrdude: pin assign miso 3 sck 1 mosi 0 reset 4
avrdude: drain OK

 ft245r:  bitclk 4800 -> ft baud 2400
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9587
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
 ft245r:  bitclk 4800 -> ft baud 2400
avrdude: reading input file "Caterina-promicro8.hex"
avrdude: input file Caterina-promicro8.hex auto detected as raw binary
avrdude: writing flash (32768 bytes):

Writing | ################################################## | 100% 217.75s


Final:

Remove SCK, MISO, MOSI and RST_N, Power Cycle and then Plug USB.   The COM should show up in Device  Manager.