Like many of you newbies, the most dreadful thing I fear is "stk500_recv(): programmer is not responding" error. There can be so many reasons why this can happen.
I was in the same situation. I had uploaded Sprinter in Sanguinololu/Atmega 1284P. After changing so many things and figuring out how to make it work, I uploaded it. But unfortunately it didnt work properly because the fuses were wrong. I tried changing it but didnt work. Then I switched to Atmega 644P. I uploaded bootloader and then tried uploading firmware but met the "stk500_recv(): programmer is not responding" error. I tried it in Ubuntu - 12.04, 12.10 (x86), 13.10 (amd 64); Arduino - v18, v23, 1.0, 1.03, Windows 7 64. I tried everything... but I couldnt. I was almost on the verge of abandoning the project. On the other hand, it is a piece of cake to upload the bootloader using USBasp by directly programming thro' avrdude. (That dude rocks!
)
Then I had an idea. Arduino is just GUI and it does all things through avrdude. And we are using programmers to upload bootloaders. So we may be able to upload firmware through the programmer directly from avrdude. My idea was to get the sprinter compiled, find out where the hex is saved temporarily and then upload it directly using USBasp. I was trying to find how to do it.. But then found that from Arduino 1.03 you can upload firmware in using programmer in Arduino itself.. I hooked up my USPasp and it uploaded in less than 2 mins! When I first uploaded firmware thro' Arduino for 1284P it took almost 10 mins... And I was praying with all my might for the entire 10 mins... Compared to that, this method was a breeze.. I wonder why this method is not highlighted anywhere (may it is and I missed it)
So I thought I can share it with you guys. In case nothing works, and you are almost hopeless, try this. Buy a cheap USBasp and 1 Pin Dual-male Breadboard Jumper (6 nos), hook up USBasp to your Sanguinlolu, click upload using programmer (under the file menu) in Arduino and voila! You are done!