avrdude-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avrdude-dev] fix for Atmega88(A) efuse verification failure


From: Ralf Glaser, track IT
Subject: [avrdude-dev] fix for Atmega88(A) efuse verification failure
Date: Wed, 24 Oct 2012 15:58:27 +0200
User-agent: Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20121010 Thunderbird/16.0.1

Hi @all,

i'm using following command to program an Atmega88A (avrdude version 5.11svn):

avrdude -pm88 -cjtag2isp -Pusb -u -B10 -Uflash:w:firmware.hex:a -Ulfuse:w:0xdd:m -Uhfuse:w:0xdc:m -Uefuse:w:0xf9:m

This works great except for a write/verification failure on the efuse byte (the efuse byte itself has the correct value of 0xF9 when read with AVRStudio 5.1):

avrdude: reading input file "0xf9"
avrdude: writing efuse (1 bytes):

Writing |  ***failed;
################################################## | 100% 0.41s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xf9:
avrdude: load data efuse data from input file 0xf9:
avrdude: input file 0xf9 contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.05s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x01 != 0xf9
avrdude: verification error; content mismatch

This goes away when (in avdude.conf) the original efuse read command:

    memory "efuse"
        size            = 1;
        min_write_delay = 4500;
        max_write_delay = 4500;
        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
                          "x x x x  x x x x *x x x x x o o o*";

        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
                          "x x x x  x x x x   x x x x  x i i i";
      ;

is replaced by:

    memory "efuse"
        size            = 1;
        min_write_delay = 4500;
        max_write_delay = 4500;
        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
                          "x x x x  x x x x *o o o o o o o o*";

        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
                          "x x x x  x x x x   x x x x  x i i i";
      ;

With that 0xF9 is read instead of (0xF9 & 0x07) = 0x01
I think there are a couple of other devices with the same problem.

Best regards,
Ralf



reply via email to

[Prev in Thread] Current Thread [Next in Thread]