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:
-
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.
-
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?
- 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: