Electronic – MCU pull down input push button with interrupt ESD issue

esdinterruptsmicrocontrollerpulldown

I have an MCU operated at 3 volt with an input pin that is floating by default. I have an external pull down circuit with a 10K resistor connected to the I/O pin. I also have it tied to VCC using a push button. The microprocessor is sleeping until the button is pressed (it is configured to generate an interrupt when the I/O line become high).

The solution have worked flawless, have tested it for months. Last week however I soldered a new batch of 16 units and when I inserted them inte their plastic case I noticed that some of the woke up and started processing and I did not press the button. I now have two theories and would like to know how likely they are:

  1. ESD has damaged the MCU? Personally I do not think so, since I have seen the same problem on at least 7 devices occasionally. This combined with that they work flawless in all other aspects makes me think that this is not the case.

  2. ESD pulls the line high occasionally when I insert it into the plastic enclosure and in this way the interrupt is triggered in the MCU. Sounds reasonable, I guess a very short ESD near the pins would actually wake up the device. Maybe the reason I see it now and not before is because of winter and a more dry air?

Am I thinking correct here?

  1. I would also like to know if I need to protect the pin in some way and suggestions on how to do this if required. I read that the chip (TI cc2540) is ESD protected but I don't know if it is enough, maybe it needs more protection. Maybe it has enough protection but I still need to handle short spikes in software.

Best Answer

I think #2 is quite plausible, especially since you mentioned plastic case. You probably generated some static electricity while handling the plastic case, and that got discharged thru the switch line. The switch is probably sticking out more than other things, so would be more likely to get zapped.

If this only happens when you first install the board in the case, then you can just ignore if necessary. However, something is marginal, and I'd want to make the system more robust. There are various options:

  1. Make the pulldown stiffer. If this unit is not battery powered, then changing the 10 kΩ to 1 kΩ is a easy thing to do. That will use 25 mW when the switch is pressed. If this is line powered, than that's irrelevant.

  2. Put a capacitor to ground on the switch line. This will require more charge on the line before it gets to a logic high level. A 1 uF ceramic is cheap and small. Even with the 10 kΩ pulldown, that's still only 10 ms time constant, so is irrelevant in human time.

  3. Put a R-C low pass filter after the switch and pulldown. For example, another 10 kΩ in series followed by 1 µF to ground. The extra delay is still irrelevant in human time since you have 10 ms time constant towards the switch on state and 20 ms towards the switch off state. This will definitely filter out short spikes, and provides additional impedance for the pin protection circuitry to work against.