Use Arduino and UNO R3, how to read the fuses in the ATMEGA328P

I have a working good setup on MacOS Catalina, with Arduino IDE 1.18.13, and I can write sketchs and download them all day long, no problem.

My question is about wanting to read the fuses in the ATMEGA (low, high, extended). I've looked at various websites ( etc) about this topic, and I've attempted to read the fuses using avrdude command line operations. I have no luck getting any reasonable output. It always comes back to me with either communications errors (as I play around with the various -c and -p options), or, if it looks like its working, and I see readback of a correct chip signature 3 bytes, it tells me the fuse bytes are all 0x00 hex. Not correct by any means, right?!

I would think this would be simple to accomplish; it should "just work", or, someone should be able to come right out and say "Nah, that's not going to work; you need a real ICSP hardware setup to get to the flag bytes". (i'm just connecting my UNO via the USB the way I would download a sketch.)

Any help out there? If you want to suggest something, I ask you kindly to please test it yourself and see that it actually works before posting. I've seen lots of forum threads with many "well you should be able to do XYZ" types of answers over the years, and those have never really been helpful without first proving they're successful.

Thanks in advance.

What programmer do you have?

If you're not set on using avrdude, you can instead read them from a sketch. This one works:

Compiled for ATmega328P
No Serial Number

Fuse bits (L/H/E): FF DE FD
Lock bits:         CF
Signature:         1E 95 F (ATmega328P)
Oscal:             95

Fuse Low = 11111111 (FF)
           ||||++++______Low Power Crystal 8 - 16MHz
           ||++__________Start Up Time=11
           |+____________Clock Output Disabled
           +_____________(no divide)

Fuse High = 11011110 (DE)
            |||||||+______Reset to Bootstrap
            |||||++_______256 words (512 bytes)
            ||||+_________EEPROM Erased on chip erase
            |||+__________Watchdog programmable
            ||+___________ISP programming enabled
            |+____________DebugWire off
            +_____________RST enabled

Fuse Extended = 11111101 (FD)
                |||||+++______Brownout at 2.7V

Lock Bits = 11001111 (CF)
            ||||||++______Read/Write to everywhere
            ||||++________R/W Application
            ||++__________No Write to Boot, no read from App

Bootloader at 0x7E00 is not readable

You can’t read the fuses via the bootloader. You must have an external programmer (or a sketch, as per pert…)

Dear jogusta and pert,

I just posted a question on the Forum a short while ago relating to this area of interest.

I have a similar issue to jogusta's issues. I am also trying to write to the fuse bytes. I think that I want to write to the extended fuse to set the fuse to 2.7V for brownout detection....not quite sure.

And thank you pert. I just downloaded the from Github. Thank you for the link.


This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.