How to get the Arduino to reset another board

arduinoreset

Let's say I have another micro controller board. It has a 2 pin header on it. If you momentarily connect those two pins together — either shorting them out with a jumper cap, or hooking them up to a button and then pressing said button, and so on — the board will reset.

Now let's say I want to set up my Arduino so that it can trigger this reset when a certain condition is met — received a command over a wireless link, a counter passed a certain value, whatever.

How would I hook this up? What additional components would I need, if any? Do I just hook both pins of the reset header to Arduino pins and digitalWrite(PIN, 1) them?

Sorry for this admittedly newbie-sounding question, but I am still fairly new to electronics.

Best Answer

MCU reset pins are normally active-low with pull-ups, which means you ground them to trigger the reset and leave them open to run normally. There's a special kind of output called open drain that's perfect for driving this sort of pin. Unfortunately, it seems like Arduinos don't support open drain outputs directly. This page suggests putting the pin in input mode to produce the open state and output mode to produce the grounded state. Alternately, if the reset is totally controlled by the Arduino (i.e. it never toggles itself), you can drive the pin directly with a normal output.

All this assumes that the MCU board is using the same 5V or 3.3V supply as the Arduino. If this is correct, it's safe to do what I've described. But if the MCU board uses a higher voltage than the Arduino, you'll need to use a transistor (NPN or NMOS) to pull down the reset line.

If the reset pin is active high, you'll have to drive it with a normal output, and the voltages probably have to be the same. You can figure out the polarity of the reset by measuring the voltage on the shorted pins with a multimeter. You can get the board voltage by measuring both pins separately.

You'll also need to connect the grounds of the two boards together to provide a return path for the current.