Polling an external digital signal, and pulling it LOW

I have a digital signal (RESET on a microprocessor) I need to monitor on the Arduino. The signal is normally HIGH, and you pull it LOW to activate it (reset the processor)

I have the signal connected to two digital pins on the Arduino, one INPUT and one OUTPUT. I poll the INPUT pin in a loop to see if something else (e.g. the program running on the processor) has pulled it LOW.

That seems to work okay on its own, but when I introduce my OUTPUT pin, it gets complicated and doesn't work out logically and I'm not sure how to connect all these things to be able to do what I want.

If my OUTPUT pin is HIGH, then I'm sending 5VDC on the signal line, which holds it HIGH as far as my INPUT pin is concerned. If my OUTPUT pin is LOW, nothing seems to happen. I would expect my INPUT pin to see that the signal is now pulled LOW.

I think this is more of a design/circuit problem, rather than a programming problem. I'm not very experienced with electronics so I think there are some concepts I'm missing that will help me design a working solution. Could anyone help point me in the right direction?

I want to be able to basically ground the signal on demand to pull it LOW and restart the processor, while also watching to see if something else has pulled it LOW. I'm tentatively thinking the solution will involve diodes.

Thanks!

Are both processors guaranteed to be powered up and down at the same time? In other words, run from the same power supply?

Yep, they are on the same power supply (the Arduino is being powered by the system the processor is in)

Is that important, having the same ground plane or something? I have verified that the arduino is operating at the same voltage as the CPU (5V)

You probably don't need 2 pins; use 1 pin configured as an input and monitor it as you suggest. When you want it to go low configure it as an output, set it low for however long (100ms?), set it high and then configure it back to being an input.

It is usual to hold a reset pin high with a resistor to Vcc (1k to 10k is fine, or check the data sheet of the processor for the manufacturer's recommendation)

What is the other thing that could pull the reset low? It is holding the reset high? If so, that's your problem. The answer to whether you need diodes or indeed anything else depends on the exact wiring of what else is connected to the reset pin. Please do some investigation and provide a schematic of everything connected to the reset pin and what you propose. Hand drawn and photographed is fine, post the image on here. How to post an image

You want to imitate an open-drain device. You can read the single pin at any time. Set it to INPUT as default, when you want it to pull LOW, write it LOW then set it to OUTPUT.

When you no longer wish to pull it LOW, set it to INPUT. If you wish to make it a weak pull-up, set it to INPUT_PULLUP or just write it HIGH after setting it to INPUT.

I tried to put together a simple version of what I think I'm working with in this simulator: Login | Tinkercad

In the simulator, if you toggle the sliding switch on the breadboard to the left, it is supposed to pull the signal LOW. If you toggle the switch to the right, it should stop pulling it low. If you toggle the switch on the voltage generator thing, it should simulate something else pulling the signal low.

It doesn't seem to work though. The multimeter always says 5V, but the current seems to drop to zero when the Arduino is not pulling the signal low? It doesn't really make any sense to me.

provide a schematic of everything connected to the reset pin and what you propose. Hand drawn and photographed is fine, post the image on here. How to post an image

...

The CPU is connected to a complicated motherboard. I'm more concerned about getting the simplified example I gave working first.

Maybe just an issue with the simulator; I did as Paul__B described on real hardware and it seems to work fine. I just write LOW to the pin and then set it to OUTPUT, and it pulls the pin low. Setting the pin back to INPUT releases control of the pin back to the processor. Thanks all

Hi,
Welcome to the forum.

Please read the post at the start of any forum , entitled "How to use this Forum".
OR
http://forum.arduino.cc/index.php/topic,148850.0.html.

TinkerCad should enable you to EXPORT your circuits to jpg.
Then you can attach that image file.

A picture is worth a thousand post.

Tom... :slight_smile:

ian123456:
The CPU is connected to a complicated motherboard. I'm more concerned about getting the simplified example I gave working first.

Sure, but the way it is wired is critical to what you do, your simplified example might not be any good if it does not take into account the actual circuitry on the board. I am only asking for the circuitry around the reset circuit, not the entire board.

Hi,
What will be pulling the RESET HIGH?

Why do you want to RESET with the Arduino?

Tom.... :slight_smile: