16
\$\begingroup\$

I accidently shorted pins 10 and 11 with 10 set to output HIGH and 11 set to input. The pin 11 is not working. How do I figure out what component I burned?

Can the problem be fixed?

\$\endgroup\$
  • 3
    \$\begingroup\$ Specifying which Arduino board it is would help identifying components possibly compromised, from the schematic. \$\endgroup\$ – Anindo Ghosh Apr 12 '13 at 6:06
  • \$\begingroup\$ @AnindoGhosh I tagged it uno^ \$\endgroup\$ – asheeshr Apr 12 '13 at 13:13
21
\$\begingroup\$

Assumption: As the specific Arduino model has not been specified, using the Arduino Uno to illustrate this answer. The rationale applies identically to the other Arduinos, for their respective pin-outs and microcontroller operating voltages.

Please refer to this pin-out diagram for the Arduino Uno: (source)


Arduino Uno pin-out


  • As can be seen, Pin 10 and 11 are both standard GPIO pins.
  • Any GPIO can not output a voltage higher than the microcontroller's supply voltage (VCC), in the Arduino. For the Uno VCC is 5 Volts.
  • Any GPIO pin can withstand input voltage up to VCC and a slight bit higher (5.5 Volts is tolerated as standard)
  • Also, when any Arduino GPIO is set to input, it is in a high impedance state, thus making it impossible to pass enough current into it for the voltages involved, for any damage to occur.
  • Thus, shorting pins 10 and 11 can not cause any damage to either pin, in the circumstances reported in the question.

Now let us examine the alternative possibilities:

  • If the Uno is powered from the DC barrel jack instead of 5 volts from the USB connection or other regulated power supply, the Vin pin outputs 1 diode drop lower than this input voltage: This would be around 8.3 Volts if the supply is a 9 Volt battery attached to the barrel jack.
  • Shorting this VIN pin to any of the analog or digital pins of the Arduino (other than specific pins which are protected by resistors) is very likely to destroy either the internal ESD diode / protection circuitry for that pin within the microcontroller, or destroy the microcontroller itself. This could be the cause of the problem.
  • Another hypothesis is that Pin 11 was exposed to some other source of high voltage, beyond the board's Vcc. This could be due to back-EMF from a motor, or from the high voltage (can be 10+ volts) generated by a piezoelectric bender (piezo speaker) if it is knocked against something. This could cause damage to ESD diodes / protection circuitry as noted above
  • Next, electrostatic discharge from static electricity can damage any given GPIO pin even while the device is not powered up. Did you happen to comb your hair and then touch the Arduino board at some point, for example? The problem will only show up later, when attempting to use that pin on the board, so causality is often difficult to pin-point.
  • Finally, if two pins are both set to output, one set high and the other low, and these are shorted, the "High" pin sees a short to ground through the "Low" pin. This source to sink contention can cause the microcontroller to heat up, and though the AVR microcontrollers typically have output protection on GPIOs, this may cause one or the other of the pins to stop functioning - though the entire microcontroller failing is more likely in this case.

Having said all that, if for whatever reason Pin 11 no longer performs input or output, the MCU's corresponding internal protection circuitry is irrevocably damaged. There is no way to repair this. This has been covered well in the answer by Manishearth.

Consider yourself fortunate that the entire microcontroller did not get destroyed, and re-code your applications to not use Pin 11 any more.

Personal tip: I've blocked the VIN sockets on my Arduino boards a long time ago by sticking some stripped insulation into them, to avoid ever accidentally exposing any jumper wire to that voltage. If I ever actually need to use VIN some day, I'll spend a delightful hour struggling to extract that bit of insulation stuck in there.

| improve this answer | |
\$\endgroup\$
  • 6
    \$\begingroup\$ Blocking the VIN sockets. Brilliant! \$\endgroup\$ – Jeff Severns Guntzel Apr 12 '13 at 16:04
9
\$\begingroup\$

It shouldn't be possible to destroy your pin by shorting input to output. Input pins can handle Vcc-level voltage, so they should be able to handle the lower output voltage from the other pin. Also, they have a high impedance, so that should protect them from most things. (See Anindo's answer on this same question for more details on this). In your specific case, I guess one of the following happened:

  • Both pins were configured for output
  • You shorted something and didn't notice
  • (Since you mentioned in chat that the pin started working again) accumulated dust or moisture fubar'd the pin

However, you can destroy pins with the following connections (taken from this excellent post, there are many more in-general ways of destroying an Arduino there):

  • HIGH output pin to GND
  • HIGH output pin to LOW output pin
  • Apply any high voltage above 5.5V to a pin (this may destroy more than just the pin)

Regarding what to do in general when you destroy a pin:

In such cases, the microcontroller pin is burned out and can't be fixed. Thee only way to fix this is to replace the microcontroller (if it's a DIP package this is relatively cheap and easy) or buy a new board. When replacing the microcontroller, you will have to burn the bootloader onto the new microcontroller(unless you got it with the bootloader) if you wish to program the Arduino via USB.


Taking a look at the schematics, the following boards have pins directly connected to the microcontroller.

  • Uno
  • Mega
  • Duemilanove
  • LilyPad
  • Fio
  • Nuova Generazione
  • Diecimila

On the following boards, there are some pins which are protected and hard to burn out:

However, if you burn a pin on these, there's not much more you can do than replace the microcontroller.

If you seem prone to pin-burning, you may want to try out the ruggedduino.

| improve this answer | |
\$\endgroup\$
3
\$\begingroup\$

Another fairly cheap thing to try is to buy another atmega328, unload your suspected damaged chip, load up the new one into the socket, burn the bootloader And see if that helps. Assuming your board has a socketed DIP atmega328.

| improve this answer | |
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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