Wednesday, July 10, 2013

Programming ATMEGA328-AU and other non-P type on Arduino using USBasp.

I am searching for the fix on programming ATMEGA328-AU on arduino board using USBasp. It turns out that I need to modify avrdude.conf file to much the signature. This link present the solution.


This is the error I get,

avrdude: Expected signature for ATMEGA328P is 1E 95 0F Double check chip, or use -F to override this check.

To fix this, I as metioned on the above link, I need to modify the avrdude.conf file located here,

C:\Program Files\Arduino\hardware\tools\avr\etc

I need to modify the signature entry of ATMEGA328P from,

#------------------------------------------------------------
# ATmega328P
#------------------------------------------------------------
part
    id = "m328p";
    desc = "ATMEGA328P";
    has_debugwire = yes;
    flash_instr = 0xB6, 0x01, 0x11;
    eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
 0x99, 0xF9, 0xBB, 0xAF;
    stk500_devcode = 0x86;
    # avr910_devcode = 0x;
    signature = 0x1e 0x95 0x0F;
    pagel = 0xd7;
    bs2 = 0xc2;
    chip_erase_delay = 9000;
    pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
"x x x x x x x x x x x x x x x x";

 to,

#------------------------------------------------------------
# ATmega328P
#------------------------------------------------------------
part
    id = "m328p";
    desc = "ATMEGA328P";
    has_debugwire = yes;
    flash_instr = 0xB6, 0x01, 0x11;
    eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
  0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
  0x99, 0xF9, 0xBB, 0xAF;
    stk500_devcode = 0x86;
    # avr910_devcode = 0x;
    signature = 0x1e 0x95 0x14;
    pagel = 0xd7;
    bs2 = 0xc2;
    chip_erase_delay = 9000;
    pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
 "x x x x x x x x x x x x x x x x";

After the change, if I want to use the arduino isp bootloader again, the original signature must be returned. Otherwise if USBasp will be programmer to use(not a the arduino isp bootloader) for programming, new signature must be maintained.