So I have been having this behavior for a while with avrdude and USBASP where at the end of a flash writing procedure there is a verification error - every fuse bit is read as if it was 0x00.
Avrdude would then ask me if I would like to return the fuse to its original value - I pressed "no" and continued without giving too much attention to it until I was locked out of one of my chips! (an atmega328p)
I started working on a new chip and just now I realized - the lfuse used to be 0xff but now reads 0x17! The fuse was changed during this behavior - I was lucky I am not locked out of the chip again.
I also observed that this happens mostly when I set my programming voltage of the USBASP to 3.3V. What could be the reason of this behavior?
Could this fuse be written by some pointer mistake in the program I am burning?
Is there a way to "lock" the fuse bits so I dont accidentally get locked out of a chip again?
Here is a photo of the programming commands before and after the lfuse was changed -->