Ponyprog reports different fuse results after multiple reads

I have something that I’ve either never noticed before or I have a serious problem.

I noticed tonight that when I use Ponyprog to read the configuration/security fuse bits on an AVR ATMega128, right after power up I think they look like they should. However, if I re-read them using the PonyProg fuse dialog (security and configuration bits…) Read button, they change…sometimes several times to the point where after the 3rd read, all check boxes are checked. Throughout, I never wrote any fuse bits, only read them.

Leaving my serial Olimex ICSP programming cable connected, if I power off the board, an Olimex AVR MT128, then power up and read the fuse bits, they are back to where they were originally. A few more reads of the bits by ponyprog and it shows them all checked again.

I also have the Olimex ATMega128 header board. It behaves the same way - the 2nd and 3rd reads of the fuse bits don’t set the same check boxes as the original read after power up.

I have a 2nd Olimex MT128 dev board and it behaves the same as the 1st dev board and the header board.

So, here’s the even more odd thing: If I try to program the device after I’ve read the fuse bits a few times, but have never written any fuse bits, Ponyprog says “Unable to probe, bad device, or device locked (-25)”. But if I power off and on the board, and then program it immediately without reading any fuse bits, the programming works and even the full verification claims it’s fine.

I was running Ponyprog 2.06f. I decided to upgrade to 2.07c, the very latest, and I get the same results.

Anyone have any idea what’s going on and why it’s behaving this way? Anyone with an AVR and Ponyprog confim similar or different results?

More experimenting shows that reading the oscillation calibration byte works the first time, but the 2nd time I attempt to read it, I get the “Unable to probe, bad device, or device locked (-25)” just like I get when I try to program the device after first reading the fuse bits.

Well, these were strange results, but I found the problem.

First, I thought it might be my serial port on my laptop - I have Dell Latitude 810 and it was in its dock which has a db9 serial connection I’ve used fine in the past. However, after going through multiple serial cables to rule out the cable, I undocked the laptop and used the db9 directly out of the laptop and then the problem went away.

I started looking at the power to my Olimex MT 128 and I had a 9VDC adapter on it…it needed 12VDC or 9VAC. Once I plugged it into 12VDC, the fuse bits read fine whether directly on my laptop DB9 or through my dock’s DB9.

So, the problem all along was underpowering the board. Must have something similar happening with the header board…just not enough juice.