I would like to take an old Arduino UNO and subvert it to support FTDI programming of ProMinis. I don't like to build anything "by rote", that is, without understanding exactly how it works. I can't find any detailed description of what the FTDI process is online. Anybody out there know where there is a good explanation?
The Uno has an Atmega328P on it which talks serial. The FTDI converts serial to USB and vice versa. If you have a com port on your computer you could in theory just connect straight to the Atmega 328P provided the voltage levels are TTL rather that proper RS232.
I'll expand what Chilli said... When you refer to FTDI, you're discussing a specific brand of IC to convert USB to a standard serial signal. What comes out of the FTDI converter is a TTL level serial stream that goes directly into the ProMini ATmega processor's serial i/o pins which in turn works in conjunction with the bootloader code to write a new program into the target devices flash memory.
The Duemilanove and the Nano (and others) have an FTDI chip installed on the board to do the USB to serial conversion required to write a program into the flash memory of the ATmega processor. The current UNO uses another ATmega processor with a dedicated program to do the USB to serial conversion, I assume it was done to save costs since the FTDI chips are a bit pricey for what they do. Other Arduino boards, specifically the Leonardo and Due, use no additional chips as Atmel added USB capability to those processors. Ultimately, it is the boot loader code in addition to the serial input that allow the processors to change their own program in-situ.
In addition to the FTDI chipsets, there are other devices currently available to do the USB to serial conversion used to communicate with the boot loader. The ones that come to mind are:
Sil Labs CP2102
Prolific PL2303
WCH CH340
You can typically find the first two as simple USB to serial converter break-out boards for cheap. I've bought PL2303 boards with a male USB A connection on one end to a 0.100" center pin nest for less than one dollar US. The CH340 is recently showing up often on cheap Chinese Arduino clone boards. I've seen Uno, Mega and Nano's for a few dollars less than those using FTDI or Atmel chips in the USB to serial conversion functions. I'm off topic so I'll get back to your post.
Another common method to get a program into an Arduino is ISP or ICSP which is an acronym for In Circuit Serial Programing. This method requires a dedicated external programmer, either from Atmel or home brewed. One of the open source devices is the USBasp which can be had on eBay for about $5 US. Or, you can build your own with the easiest way is to repurpose an Uno.
Using an Uno requires a small bit of hardware, specifically a six conductor ribbon cable and socket to fit onto the "ICSP" 2x3 pin header of the target board and some means of connecting the other ends of that six conductor cable onto the Uno that is used as the programmer. I have used a prototyping shield on my programmer Uno, mounted a 2x3 pin header onto it and wired the connection to the appropriate points. Then, a short length of six conductor ribbon cable with female connectors on each end finished the interconnect. To finish the Uno programmer, you download the "unoisp" sketch into your Uno and you should be good to go. The details can be found here: http://arduino.cc/en/Tutorial/ArduinoISP
Thank you very much for a very clear explanation. I've decided to build my own ProMini programmer, since the one I bought went tango uniform. I have a spare UNO lying around, and the means to make header terminated cables, so off I go on another project.
To use an Uno's USB/Serial adapter with another bootloaded chip,like a Promini:
Connect Reset on the Uno to Gnd (holds the chip in Reset; same effect as if you had pulled the chip out).
Connect +5, Gnd, Rx, Tx to other device's +5, Gnd, Rx, Tx (do not swap Rx/Tx).
Start the upload in the IDE.
When you see "Compiled xxx of 32xxx bytes" (or similar), press Reset on your other chip.
Might take a few tries to get the timing right.
Can be easier to see if File:Preferences has Verbose Outputs turned on.