I'm playing around with trying to use an FTDI-232RL to act as an ICSP.
I've looked all over the web, I've looked at the AVRDUDE config file, downloaded the FTDI datasheets, ad-nauseaum and still can't seem to get anywhere.
I even found that the older Arduino boards that have an FTDI chip and the 4 extra header pins is supposed to work as a programmer (and I have a Duemilanove board!). I tried both the Duemilanove board and an FTDI breakout board.
I've figured out the FTDI chip pin number to Bit-Bang I/O bit number to RS-232 pin mapping (for example, bit 0 is chip pin 1 is TXD) and this matches what I found on the web and what's in the AVRDUDE config file.
Anyway, it "sorta" seems to work in that the setup is able to READ the signature off the AVR, but it won't go further. I tried a simple chip erase using this command line:
[b]avrdude -c arduino-ft232r -P usb -p atmega2560 -s -e -v -v [/b]
and I get this back from AVRDUDE:
``` **avrdude: Version 6.1, compiled on Jan 8 2016 at 10:55:26 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/usr/local/etc/avrdude.conf" User configuration file is "/root/.avrduderc" User configuration file does not exist or is not a regular file, skipping
Using Port : usb Using Programmer : arduino-ft232r Overriding Baud Rate : 115200 [color=red]ft245r: spi bitclk 115200 -> ft baudrate 230400[/color] AVR Part : ATmega2560 Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PA0 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail :
Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00 flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00 lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : ftdi_syncbb Description : Arduino: FT232R connected to ISP Pin assignment : 0..7 = DBUS0..7 VCC = (not used) BUFF = (not used) RESET = 7 SCK = 5 MOSI = 6 MISO = 3 ERR LED = (not used) RDY LED = (not used) PGM LED = (not used) VFY LED = (not used)
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1E9801 avrdude: safemode: lfuse reads as 0xF7 avrdude: safemode: hfuse reads as 0xDC avrdude: safemode: efuse reads as 0xFC avrdude: erasing chip avrdude: Program enable command not successful. Retrying. avrdude: Program enable command not successful. Retrying. avrdude: Program enable command not successful. Retrying. avrdude: Program enable command not successful. Retrying. avrdude: Device is not responding to program enable. Check connection.
avrdude done. Thank you.** ```
Notice the line highlighted in red... it seems like AVRDUDE thinks my chip is a 245r when in fact it's a 232r (those have different pinouts).
It seems like it's trying to work, but it just won't go. I looked at the signal lines with a scope and didn't see what I expected to see. With my Atmel ISPMKII (a real one, not a clone), RESET goes solid low, MOSI and MISO scamper up and down at the bitclock rate and SCK sends out nice, as expected, 8 usec pulses... 8 per byte. But the FTDI chip just seems to spit out random trash on all the lines. There is nothing that looks "right".
So, has anyone ever tried this (and gotten it to work)? I know my FTDI devices are all good... they work in their intended applications. I'm sure that I'm "close" to the solution, but it's starting to give me a headache and I don't want to give up.
Anyone??? HELPPPPPPPPPPP!!! Please!