When I program a fuse with Avrdude, which is apparently in "safemode", I get no prompt to confirm the fuse change, nor does Avrdude try to recover the original fuse value. I get the same result in Terminal mode (option -t). I also tried the options "-u" (Disable safemode) and "-s" (Disable safemode prompting); they seem to have no effect in this regard, although "-u" does prevent safemode pre/post-fuse reporting.
The Avrdude manual indicates that I should get a prompt and do the recovery by default.
Does anyone know why safemode does not appear to be working although it seems to be enabled?
Here is my command (change Extended fuse value from 0xFD to 0xFF in this case):
C:\Workspace\Projects\AVR\ArduinoISP>avrdude -v -patmega328p -cstk500v1 -PCOM33 -b115200 -Uefuse:w:0xff:m avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "C:\Program Files\avr-gcc-8.2.0-x86-mingw\bin\avrdude.conf" Using Port : COM33 Using Programmer : stk500v1 Overriding Baud Rate : 115200 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 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 3600 3600 0xff 0xff flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 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: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e950f (probably m328p) avrdude: safemode: hfuse reads as DA avrdude: safemode: efuse reads as FD avrdude: reading input file "0xff" avrdude: writing efuse (1 bytes): Writing | ################################################## | 100% 0.02s avrdude: 1 bytes of efuse written avrdude: verifying efuse memory against 0xff: avrdude: load data efuse data from input file 0xff: avrdude: input file 0xff contains 1 bytes avrdude: reading on-chip efuse data: Reading | ################################################## | 100% 0.02s avrdude: verifying ... avrdude: 1 bytes of efuse verified avrdude: safemode: hfuse reads as DA avrdude: safemode: efuse reads as FF avrdude: safemode: Fuses OK (E:FF, H:DA, L:FF) avrdude done. Thank you.
The conf file does not disable safemode:
... # Turn off safemode by default #default_safemode = no; ...