FTDI Basic by Sparkfun is causing bootloader malfunction on ATmega328

Hello! I am working with an AtMega328P-PU (from arrow electronics), which I am programming using a FTDI basic breakout from Sparkfun. I loaded the bootloader using a Mega 2560 R3 and was able to upload just fine and worked. After uploading, I tried to switch codes and I kept getting a not in sync message. I ended up reburning the bootloader, and I was able to upload another code... once. Near as I can tell, I can upload one code, but if I need to switch codes I need to redo the bootloader.

These are my questions: Has anyone had this problem and been able to fix it? Is reburning the bootloader over and over bad for the IC?

All else fails, I can add some pins for the ICSP, but I would rather not, as it is kind of a waste of space.

Any and all help is greatly appreciated. Please let me know if you need my schematics or other documentation.

Thank you!

When the bootloader is the only code on the chip, it runs continuously, and therefore will accept at least one upload. Things to look at when it works only once are: 1 -- Make sure you have an auto-reset circuit in place (capacitor between FTDI DTR and ATmega328P Reset) or confirm you are manually resetting the ATmega when you try to upload. 2 -- Make sure your fuses are set properly for the bootloader you have, including BOOTSZ0, BOOTSZ1, and BOOTRST fuses.

One serial upload per bootloader burn is a classic symptom of a failed auto-reset circuit.

I wasn't able to get the FTDI to work (even with capacitor from DTR to reset, in either orientation), but while I was poking around trying to find out how to test the fuses, I found that the arduino ISP can be used to program in the absence of a bootloader. For this particular project I think I will use this, since it starts the code immediately after the board turns on.

Thank you both for your help!

Side note: I was using the internal clock, not the recommended 16mHz oscillator.