0

I have an Arduino (Arduino A) hooked up to an external FRAM chip and I want to be able to pull the Arduino A's reset pin to ground to keep it in a constant reset state. Then I want to hook up another Arduino (Arduino B) up to the same lines going from Arduino A to the external FRAM chip and pull data off of the FRAM chip.

I am worried that when I hook Arduino B to the lines running between the FRAM and Arduino A that it will damage Arduino A. If the digital pins are in a high impedance state while I do this though, then it should be fine. I can't find the necessary documentation to figure this out though.

All Arduinos involved are Uno Rev 3s.

Any help would be appreciated, thanks!

1
  • 2
    I'd suggest adding some resistors between the arduino outputs, and the FRAM IC. So that in the case that Arduino A is not reset (broken connection e.g.) you don't get any shorts (i.e. one arduino outputs a HIGH, while the other outputs a LOW).
    – Gerben
    Oct 1, 2015 at 13:06

1 Answer 1

1

From the ATMEGAxx8 datasheet...

11.1 Resetting the AVR

... The I/O ports of the AVR are immediately reset to their initial state when a reset source goes active. This does not require any clock source to be running.

(bold added)

Looking over the register descriptions for the Data Direction Registers, all bits have an initial value of 0, corresponding to high impedance input.

...so it is safe to assume that all IO pins will be in a high impedance state a very short time after the RESET pin goes low.

Caveats:

  1. The clamping diodes are in-circuit even when pins are in high impedance state, so current will flow if the voltage on the pin is higher than Vcc or lower than Ground (at least until the diode blows up!).

  2. Some Arduino pins are connected to other things besides just the pin on the MPU. For example, digital pin 13 is connected to ground though a resistor and diode, so current will flow into it if you connect a voltage higher than the threshold for the diode. On the Uno there are also resistors on the RX and TX pins connected to the serial communications link, so current can flow there too.

  3. The MISO pin can inadvertently become an output while RESET is held low if the Programming Enable command ($AC $53 xx yy) is transmitted over the MOSI & SCK lines. This process is described in App Note AVR910.

4
  • Thank you for explaining the whole reasoning path from datasheet to initial values of the registers. That helps a bunch!
    – rev
    Sep 30, 2015 at 21:39
  • But note that holding a AVR in reset also means that it will be listening for programming signals on some of its pins. Sep 30, 2015 at 21:45
  • My reading of this is that there is you must hold the RESET pin low during power up to enter serial downloading mode. - no, when I am programming using ICSP, you can enter ICSP programming from any reset, not just power-on reset.
    – Nick Gammon
    Oct 1, 2015 at 2:25
  • Above commentors are correct! Despite what the data sheet says, the MISO line does become an output if RESET is asserted and then the programming enable command is sent! Answer updated to reflect. Great catch for a very obscure corner case.
    – bigjosh
    Oct 1, 2015 at 13:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.