First, some photos:
For context, this is a perfboard for a Nerf blaster controller: it's meant to drive a stepper scotch yoke pusher, two outrunners with flywheels attached. It takes connectors from the trigger switch, pusher limit switch, ESC signal lines, and stepper. I made one huge blunder that I didn't realize until I finished the whole board: what I was reproducing wasn't meant for a 8MHz Pro Mini. Sure, it was 3.3V, but that mostly isn't a problem, but the ESCs have been reflashed to a fork of SimonK made for Nerf flywheel drives and the designer has his doubts on whether the ISR-based speed-control will hold up. This seems consistent with the error codes I get (and interpreting the order of the included selftest() function) when trying to power my build on: 3 beeps followed by 3 other beeps: no speed feedback.
His firmware is hosted here, I've made appropriate edits to it on my own for reassigning pins/removing unimplemented features and changed register read/write values as appropriate too.
I've checked over my wiring on some of the key problem points multiple times, and also for my attempts to reburn my Pro Mini with ArduinoISP, running continuity checks and double-checking pin assignments on the SPI bus. It is still possible that I've gotten something wrong there, but I most likely will need 16MHz either way and I'll cross those bridges when I get to them.
A possible workaround proposed (without needing to do the fussy operation of desoldering the entire board) was to reburn the fuses on my Pro Mini to enable the internal RC oscillator and just run it off my 5V buck. I was hoping to raise the target frequency and set the fuses in one fell swoop with this method, by editing my boards.txt file. I've had some problems with that: adding a board definition seems to omit the entire AVR board section from my IDE until re-installed, and I can't currently be confident that my changed board definition would match. That's most likely just another problem with a bridge I'll want to cross when I get to it.
So, I wired up everything and no dice. First, I tried swapping between pins 50-53 on the Mega to the ICSP. Then, I tried selecting the 3.3V 8MHz processor just to make sure that Arduino IDE wasn't just getting unhappy about me trying to "trick" my board. After that, I went through the process of disabling auto-reset with a 120 Ohm VCC to Reset line. Just to try it out for good measure, I also added a 100 nF cap between Reset and GND. At this point, I was getting a device signature of 0xffffffff, to which I realized I needed to cut VCC and ground lines on the perfboard: they led VCC into a set of pull-ups and pull-downs that were on pins 11 & 12 (which were being used for SPI). At this point, I'd ended up with the following verbose output:
"-CC:\Users\myuser\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -patmega328p -cstk500v1 -PCOM8 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Users\myuser\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"
Using Port : COM8
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Failed chip erase: uploading error: exit status 1
I've heard that this can be caused by the system clock not running, which I thought was especially relevant as switching from the resonator to the internal RC was exactly what I wanted to do. I've tried to implement Adafruit's modified version of ArduinoISP but wasn't quite as confident in finding documentation on it and am not sure if that code might need some changed assignments for a Mega or how to exactly feed the clock signal into a Pro Mini in particular.
In between all of this, I did try pinging the Pro Mini through cmd and avrdude, to which I wasn't able to get a programmer response.
At some point, I'd be willing to try to extract my 3.3/8 Pro Mini and even redo the entire perfboard with a recently shipped 5/16 one, or just buy off a PCB made for the same blaster by a local club member. Before that, I wanted to make one final effort to try and save this Pro Mini.
Sorry if I've rambled on this topic. Though I've worked with embedded projects for years I've never quite sat down and learned all the nuances (or retained enough from the limited amount of courses at college available on them), so quite often in situations like this I realize I'm still a noob.