Why exactly is my Raspberry Pi Pico (MCU) resetting during HDMI hotplugs with my simple HDMI signal sniffing circuit? Although the solution to this is obvious, I'm curious as to exactly what's happening and if this is cause for extra considerations for my circuit.
Minimal example to reproduce this (no signal pins connected to HDMI, only ground). Note (1) pico is powered by laptop USB and (2) the “run” pin is meant to reset the device when pulled to ground.
- I put a Raspberry Pi Pico in a breadboard. There are only two jumper wires attached to Pico, but neither attached at other end - one on "run" pin, the other on ground. I power on the pico with my laptop USB, running a small C program I wrote. My laptop is not plugged into an outlet.
- Pin 30 (Run) has a single short ~4" jumper wire connected via breadboard, but it's not connected to anything at other end (e.g., just left loose in air, or placed in empty row in breadboard).
- Pin 3 (Ground) also has a single short jumper wire attached to it, and is left dangling.
- I plug one end of an HDMI cable into my TV, which is on, and leave other end disconnected.
- I take the ground jumper wire and tap it a couple on the shell (shield/ground) loose end of the HDMI cable connected to my TV.
- Pico resets.
- The pico only resets when I tap the ground jumper wire to my TV ground shell/shield, not my set-top-box shell/shield.
- If I disconnect the jumper cable from pin 30 "Run" (which is not actually connected to anything), and redo this, the pico does not reset.
- Note: The "run" pin resets the pico if pulled to ground. According to datasheet, there is a ~50k internal pullup resistor to 3.3v VCC.
- I think it's clear that when I leave the jumper wire attached to "run" in breadboard and dangling, somehow the run pin goes low when connecting grounds from Pico to TV HDMI, but why?
Another note... Similar to https://www.tivocommunity.com/community/index.php?threads/hdmi-ports-voltage.482253/ I am seeing about 50V AC (60hz) RMS on my digital voltmeter between Samsung TV hdmi shell and wall ground when TV is not connected to anything except wall power (it has 2-prong plug). So I'm guessing this is what's doing it. Presumably this is very low current, but what can I do to protect against this during hotplug?
To explain why I am doing this, I was interested in using the Pico to sniff DDC (i2c) and CEC traffic (one-wire protocol for control messages) on HDMI. My actual circuit uses a 74LVC245 to level shift the HDMI signals, and I have a separate board to breakout the HDMI pins while passing through from source to sink. Also, it uses DDC ground, not shell (but there’s continuity there on both source and sink side). I want this to work through an HDMI hot-plug. However, doing hot-plugs (regardless of which device is plugged in second) was resulting in these resets. I had the jumper wire connected to "run" to reset the pico to upload code, and only after removing that did the resets stop.
More important than why is this happening, I am wondering if this means I should be adding some sort of protection for voltage transients to this circuit, especially if I were to make this more permanent? What sort of considerations should be made here for hot-plugs? Note: I'm not interested in doing anything with the high-speed differential HDMI signals.