0
\$\begingroup\$

I read a lot about fuse bits in AVR microcontrollers and everyone says that fuse bits can be reset by using high-voltage programmer only, they can't be reset via UART<->ICSP.

So, I've received an Atmega328p from AliExpress recently, seems like it's not original one, but it works perfectly. Then I was setting fuse bits using avrdude and did a mistake accidentely by passing 0xFF into high fuse, and avrdude told me that fuse bits were written successuly. I was really surprised and tried to read back the written bits, and hfuse was really set to 0xFF!

Then I played with other bits like lfuse and efuse and everything worked like a charm. I can write 0xFF into any fuse, then change it to 0x00 and then change it back to 0xFF just via USPASP programmer and ICSP interface.

Now the question is why I can change fuse bits just using USBASP programmer and ICSP interface? Is this the way AVR Atmega328p works or is this just the behavior of my fake Atmega328p? Did anyone faced the same behavior?

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

You can program the fuses through ICSP just fine.

The problem is, if you accidentally program the fuses so that ICSP is disabled, then you can't program the fuses via ICSP to enable it again, and must use the HVPP.

So what you did should have locked you out of the MCU. It might be a feature of the clone chip that did not disable ICSP.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.