avrdude: Device signature = 0x1e9706
avrdude: Expected signature for ATMEGA1284P is 1E 97 05
Double check chip, or use -F to override this check
Correcting the device didn't help, avrdude doesn't recognise the ATmega1284. That could be fixed easily by creating a custom entry in $HOME/.avrduderc. I didn't bother with that since avr-gcc doesn't support the ATmega1284. At this point I was slightly worried as I had ordered a large quantity of ATmega1284 instead of the ATmega1284P.
A work-around
Fortunately there is a work-around. The two microcontrollers are essentially identically except for some small electrical differences relating to power usage and the last signature byte. Therefore code compiled for the ATmega1284P will run on the ATmega1284. If you are using avrdude to upload just add the -F command line option to force the signature check to pass.If you use the xboot bootloader you should have no further problems after installing the bootloader since xboot doesn't check the signature bytes. Users of the Optiboot bootloader are probably not so fortunate; I believe the signature is checked - I haven't tested it since I'm now using xboot on all of my Calunium development boards.
I think any code that is valid on the ATmega1284P is valid on the ATmega1284 non-P version. I believe the P signifies picopower, which allows the brownout detection circuitry to be disabled. The non-P version still allows the register bit to be set for disabling brownout; I presume it has no effect on power consumption. I haven't noticed any ill-effects of setting it.
ReplyDeleteI cannot provide support for the USBasp programmer. Please contribute the manufacturer or your supplier.