Hi,
This is my first time posting, so sorry if this is the wrong forum or if I missed a previous relevant thread. I've been researching this issue for several days now so hopefully I'm not reviving a resolved issue.
I have a bare atmega328p chip on a PCB. The only other components on it are some decoupling caps (20uF) and a a pullup for reset (10k).
I can upload code or the bootloader just fine when running the chip at 5V. I have tested both 1MHz internal clock and 8MHz. In both cases, when I then try to use a 3.3V programmer, the upload fails to verify. The location in memory of the verification failure depends on the sketch/bootloader I upload. I am using the minicore package.
5V programmers tested: Arduino as ISP (nano clone), USBtinyISP, USBasp (slow)
3.3V programmers tested: Arduino as ISP (Seeduino XIAO, Sparkfun Redboard Turbo) and USBasp (slow) with 3.3V jumper
Debugging has been hard because in the process I've burnt out several chips, and I'm hand soldering QFN packages so I get a lot of errors related to improper connections. However, I've done tests where use USBasp at 5V to upload the 1MHz config, switch the header to 3.3V, and the same upload fails. Switching the header back to 5V works immediately. I have tested on two different USBasp's.
I don't have a much experience with AVR fuses, so if someone has a suggestion in that direction, guidance would be much appreciated!
My boards are back at the lab so I don't have the logs right now, I could definitely upload them tomorrow if it helps.
Thank you guys so much!