Go Down

Topic: 32u4 can read fuses with avrdude but write fails to change values - new chips (Read 750 times) previous topic - next topic

liuzengqiang

I've encountered this problem today. I made two boards with new parts. The 32u4 will respond to fuse read but not to write.
I was first using avrdude 6.3 from arduino 1.8.5 (few lines removed to fit within 9000 chars)
Code: [Select]
avrdude.exe: Version 6.3, compiled on Jan 17 2017 at 12:00:53
             System wide configuration file is "D:\Downloads\arduino-1.8.5\hardware\tools\avr/etc/avrdude.conf"

             Using Port                    : COM27
             Using Programmer              : stk500v1
             Overriding Baud Rate          : 57600
             AVR Part                      : ATmega32U4
             Chip Erase delay              : 9000 us
             PAGEL                         : PD7
             BS2                           : PA0
             RESET disposition             : dedicated
             RETRY pulse                   : SCK
             serial program mode           : yes
             parallel program mode         : yes
             Timeout                       : 200
             StabDelay                     : 100
             CmdexeDelay                   : 25
             SyncLoops                     : 32
             ByteDelay                     : 0
             PollIndex                     : 3
             PollValue                     : 0x53
             Memory Detail                 :

                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               eeprom        65    20     4    0 no       1024    4      0  9000  9000 0x00 0x00
               flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
             Programmer Type : STK500
             Description     : Atmel STK500 Version 1.x firmware
             Hardware Version: 2
             Firmware Version: 1.18
             Topcard         : Unknown
             Vtarget         : 0.0 V
             Varef           : 0.0 V
             Oscillator      : Off
             SCK period      : 0.1 us

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude.exe: Device signature = 0x1e9587 (probably m32u4)
avrdude.exe: safemode: hfuse reads as 99
avrdude.exe: safemode: efuse reads as F3
avrdude.exe: reading input file "0xff"
avrdude.exe: writing lfuse (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.07s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory against 0xff:
avrdude.exe: load data lfuse data from input file 0xff:
avrdude.exe: input file 0xff contains 1 bytes
avrdude.exe: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0x5e != 0xff
avrdude.exe: verification error; content mismatch

avrdude.exe: safemode: hfuse reads as 99
avrdude.exe: safemode: efuse reads as F3
avrdude.exe: safemode: lfuse changed! Was ff, and is now 5e
Would you like this fuse to be changed back? [y/n] n
avrdude.exe: safemode: Fuses OK (E:F3, H:99, L:FF)

avrdude.exe done.  Thank you.


Is there any reason for this to happen? My boards look nice, no short circuits.

I also tried 1.6.5-r5 that has avrdude.6.0.1. Writes were successful although it complained that EF reads back as CD instead of FD. I think that's just a reserved bit thing.

Code: [Select]
avrdude.exe: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
             System wide configuration file is "D:\Downloads\arduino-1.6.5-r5\hardware\tools\avr/etc/avrdude.conf"

             Using Port                    : COM27
             Using Programmer              : stk500v1
             Overriding Baud Rate          : 57600
             AVR Part                      : ATmega32U4
             Chip Erase delay              : 9000 us
             PAGEL                         : PD7
             BS2                           : PA0
             RESET disposition             : dedicated
             RETRY pulse                   : SCK
             serial program mode           : yes
             parallel program mode         : yes
             Timeout                       : 200
             StabDelay                     : 100
             CmdexeDelay                   : 25
             SyncLoops                     : 32
             ByteDelay                     : 0
             PollIndex                     : 3
             PollValue                     : 0x53
             Memory Detail                 :

                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               eeprom        65    20     4    0 no       1024    4      0  9000  9000 0x00 0x00
               flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
             Programmer Type : STK500
             Description     : Atmel STK500 Version 1.x firmware
             Hardware Version: 2
             Firmware Version: 1.18
             Topcard         : Unknown
             Vtarget         : 0.0 V
             Varef           : 0.0 V
             Oscillator      : Off
             SCK period      : 0.1 us

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude.exe: Device signature = 0x1e9587
avrdude.exe: safemode: lfuse reads as 5E
avrdude.exe: safemode: hfuse reads as 99
avrdude.exe: safemode: efuse reads as F3
avrdude.exe: reading input file "0xff"
avrdude.exe: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory against 0xff:
avrdude.exe: load data lfuse data from input file 0xff:
avrdude.exe: input file 0xff contains 1 bytes
avrdude.exe: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lfuse verified
avrdude.exe: reading input file "0xd7"
avrdude.exe: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude.exe: 1 bytes of hfuse written
avrdude.exe: verifying hfuse memory against 0xd7:
avrdude.exe: load data hfuse data from input file 0xd7:
avrdude.exe: input file 0xd7 contains 1 bytes
avrdude.exe: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of hfuse verified
avrdude.exe: reading input file "0xfd"
avrdude.exe: writing efuse (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.07s

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

Reading | ################################################## | 100% 0.01s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0xcd != 0xfd
avrdude.exe: verification error; content mismatch

avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as D7
avrdude.exe: safemode: efuse reads as CD
avrdude.exe: safemode: efuse changed! Was fd, and is now cd
Would you like this fuse to be changed back? [y/n] n
avrdude.exe: safemode: Fuses OK (H:FD, E:D7, L:FF)

avrdude.exe done.  Thank you.


My programmer is an adafruit feather 328p at 3.3V. Target board is 3.3V. Measured 3.3V rail got 3.25V. I jacked up the arduinoasisp setting to 57600. Flashing code worked with no issues. I was doing another board last week but didn't encounter this issue.
Serial LCD keypad panel,phi_prompt user interface library,SDI-12 USB Adapter

westfw

What programmer are you using?
I don't think a bootloader can ever write fuses...

liuzengqiang

Reposting last portion of my post
My programmer is an adafruit feather 328p at 3.3V. Target board is 3.3V. Measured 3.3V rail got 3.25V. I jacked up the arduinoasisp setting to 57600. Flashing code worked with no issues. I was doing another board last week but didn't encounter this issue.
Serial LCD keypad panel,phi_prompt user interface library,SDI-12 USB Adapter

westfw

Huh.  No ideas.  I'm disturbed that it doesn't read/report lfuse...

liuzengqiang

Not sure about that either. No report of lfuse for any processor I tried. I can force read it with U:lfuse:r:-:m but it won't report it otherwise.
Serial LCD keypad panel,phi_prompt user interface library,SDI-12 USB Adapter

Go Up