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!
-
2I'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– Gerben2015年10月01日 13:06:05 +00:00Commented Oct 1, 2015 at 13:06
1 Answer 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:
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!).
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.
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.
-
Thank you for explaining the whole reasoning path from datasheet to initial values of the registers. That helps a bunch!rev– rev2015年09月30日 21:39:02 +00:00Commented 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.Ignacio Vazquez-Abrams– Ignacio Vazquez-Abrams2015年09月30日 21:45:14 +00:00Commented 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.2015年10月01日 02:25:44 +00:00Commented 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– bigjosh2015年10月01日 13:26:29 +00:00Commented Oct 1, 2015 at 13:26