TI/Luminary LM3S8971.
Went to do some upgrades in my startup code, in the function called -- ironically enough -- "escape_hatch", which is the VERY FIRST THING that gets run. It spins on a pressed button so if something downstream like PLL setup or I/O port stuff messes up JTAG, I can still get in with the JTAG debugger and figure out what's happening and program flash and whatnot.
The first time it runs, I step through the code up to what I thought would be a totally safe statement, and -- BAM! No JTAG.
Totally f'ing great. Oh loverly.
It's a proto board from DigiKey for a project that's going to use a different processor, so I don't even have spares. Will joy never cease.
Order parts.
Wait.
Get parts, then when the need for the board comes around on the guitar, unhook the board from all the umbilici connecting it into the breadboarded project, remove the chip (ChipQuik is great stuff, by the way --
All of the lines from the JTAG header on this board goes to port C. Of course, *TRST goes to port B, so when I execute this line:
GPIOB.DEN = MASK_BIT_3; // Digital enable
it TURNS OFF THE F'ING JTAG TRST PIN, which disables the whole shebang. It just makes me feel so good I want to throw tools through the walls.
But, I only consumed one processor finding my bug, and now the line reads
GPIOB.DEN |= MASK_BIT_3; // Digital enable
and all is well. And, I have a spare processor in case I do anything more stupid.
@#$%