My friend wants to upload a arduino bootloader into a new atmega328, I said it can be done using a usbasp, and tools--burn bootloader. Buy It had sync error. So I just tried it using a a GUI called "SinaProg" and searched it, to get back a device signature, but it said check connections and try again, I did a wild guess and placed a 12MHz crystal in the xtal pins of m328 (since the usbasp had 12Mhz) and searched again, we were able to get a handshake, and the device signature. I did the same thing with with a attiny85, when tried searching avrdude responded to check the connection and try again, but when tried with a 12MHz at the xtal, it was programmed, to run in 1MHz, which worked well once I removed the crystal, even I2C worked properly.
Why was it so, what was the need for keeping a crystal of equal freq in the m328?
Should the programmer freq be greater that or equal to the uC freq?
If so to prog a 16Mhz uC, should the programmer crystal be changed some how?
Is it the programmer that is faulty? Is it that it cant provide the pluses for the m328 or tiny85 to respond.
I'm sorry if this question has been asked before, I couldn't find one.