Can only upload once using Serial (ftdi)

Hi I'm having trouble with a bare bones board. I can only upload with a serial (usb/ftdi friend) cable once for each time I burn the bootloader.

I've looked at the troubleshooting guide, and I can't find a similar situation. Here's how I can make it work:

  1. Connect Dev board with usbtiny-isp
  2. select 'duemilanove w/ Atmega 328'
  3. remove usbtiny-isp
  4. connect to ftdi friend
  5. select 'Programmer -> AVR ISP'
  6. sucessfully upload sketch
  7. try to upload different sketch "avrdude: stk500_recv(): programmer is not responding."

If I go back and burn the bootloader again, I can once again load a sketch with the ftdi board.

I don't understand fuses enough yet to understand if my fuses are set incorrectly.

I have the usbtiny-isp, so I can program the boards with that, but I just wonder what the issue is, and if I can fix it. Sometimes it's more useful to have access to the serial terminal without switching cables all the time. I'm on MAC OSX 10.7.

Does anyone know why I can only upload one time for each time I burn the bootloader?

Thanks!

Jimmy

Sounds like you don't have an auto-reset circuit. Hold down the Reset button until you see the "Binary sketch size:" message on upload.

If you have Receive and Transmit LEDs on your FTDI board/cable or your Arduino breadboard you can watch for a blink as the signal to release Reset.

Interesting. I don't have a reset button either! Why does it program the first time after I burn the bootloader?

Thanks for the info!

mixographer: Why does it program the first time after I burn the bootloader?

Because there is no sketch to run, the bootloader has nothing better to do than wait for an upload. Once there is a sketch uploaded the bootloader will turn control over to it shortly after reset if it sees no upload coming in through the serial port.

If you don't have a Reset button just jumper the Reset pin to Ground to simulate one.

The modern Arduino boards have the DTR signal connected to the Reset pin through a capacitor. A brief LOW on the DTR line causes an auto-reset. If your FTDI cable has a DTR output you might want to try that.

Thanks so much for the help! I think I connected DTR to reset through a 0.1mF capacitor (104). I'll take a look at my Eagle files. I don't think I brought pin 1 out to anywhere except the ICSP header.

I'll rig a jumper wire ard see if i can get the timing right,

Thanks,

Jimmy

That is the problem! If I pull pin 1 to ground and let it come up right when the ftdi friend blinks, the sketch goes on no problem.

Now I wonder why my capacitor doesn't let the board reset. Who designed this board anyway.... oh yeah, that was me. Oooops!

Thanks johnwasser for solving this one for me.

Similar situation: I could upload a sketch zero times via my ftdi when I burned the bootloader using board "arduino nano atmega328" (my programmer device).

However, when I burn the boot loader using board "pro mini +5v Atmega328", i can then upload a sketch exactly 1 time via my ftdi. BUT I thought the boot loader also burned in the "blink" program. So I don't get the bit about the boot loader not having anything better to do the first time - how does it know/care that the blink sketch isn't a "real" sketch? It obviously does.

Further research, including this thread, and http://www.yuriystoys.com/2012/02/arduino-on-beadboard-uploading-your.html for example, indicates sketch uploads 2-n requires hooking up the ftdi's DTR to the RESET circuit (which of course has my 10k pullup on it.) I still cannot reconcile how for example the famous http://itp.nyu.edu/physcomp/Tutorials/ArduinoBreadboard does it, NO DTR NO DTS NO .1uF cap NO NOTHING EXCEPT TX and RX and per it still we should be able to upload sketches > 1 time.

Another thread whose URL escapes me at this moment indicated it was the versions of the ftdi drivers that caused this behavior difference. Clearly there is still more room for confusion.

Thoughts, threats, RTFMs welcome. Thanks JR

astrojr1: I still cannot reconcile how for example the famous http://itp.nyu.edu/physcomp/Tutorials/ArduinoBreadboard does it, NO DTR NO DTS NO .1uF cap NO NOTHING EXCEPT TX and RX and per it still we should be able to upload sketches > 1 time.

Perhaps the "Arduino on Breadboard" instructions were written back in that days of the Arduino NG when you had to do a manual reset to upload. It does include a reset button.

Have you tried those breadboard instructions and successfully uploaded a sketch without pressing the Reset button at the right time? Have you tried a second upload? I expect that one or both of those uploads will fail.

johnwasser:
Have you tried those breadboard instructions and successfully uploaded a sketch without pressing the Reset button at the right time? Have you tried a second upload? I expect that one or both of those uploads will fail.

Yes I have! After burning the bootloader via the icsp programmer, I can connect my ft232 using only TX and RX and it will indeed upload a sketch -exactly once- without having to hit the reset. However, upload 2 fails, and I have tried maybe a dozen times to time the manual reset right without success. However I do not have all the activity LEDs present, so I very well may be mis-timing my reset attempts. I see now the above how-to assumed you would manually reset at the right time, although it does not mention any of this in the tutorial except for one brief mention that you will press the reset button at some point.
After reading more, I think the ftdi DTR–>.1uF cap–>reset on atmega328 is the key. SMT-soldering-challenged as I am, I tried all other solutions first.
Thanks for the help to all,
JR

UPDATE: that was the solution, it is uploading like a champ now, every time. Thanks again all!

I have the same problem with a Duemilanove designed by tinker.it, I uploaded the “blink” and it ran the file but I could not upload again and still cannot. I tried my genuine R3…no problems