Electronic – MUX input debouncing

debouncemultiplexer

I am using a CP2103 to interface with a simple 74HC4051 MUX. I want to use 3 of the I/O ports on the CP2103 to control the input pins of the MUX. The 4th I/O port is being used for something else. The problem is, when switching the I/O ports, there is a delay which the MUX reacts to far too quickly.
If I went from a 0-0-0 input to a 1-1-1, then during the time it takes for the CP2103 to switch all its outputs, on the output of the MUX, I will also see the outputs for 0-0-1 and 0-1-1 go high for about 10uS each. I know this is due to the I/O ports of the CP2103 switching high one by one, rather than simultaneously.

Unfortunately, I can't go into much more detail about what is on those outputs as it is a work thing, but all I can say is even the small 10uS pulse is having an undesired reaction.

So, my question is, is there a MUX out there that has some sort of built in debounce (5mS or something) so these small delays won't register? I would really like to do this without having to get a microprocessor as it seems a bit unnecessary for something like this.

I did think about using capacitors to delay it, but then realised it would just delay the other outputs as well and not actually fix anything.

I hope I have managed to relay my question properly and you guys understand. Feel free to ask any questions and I will try to answer.

Best Answer

If your application allows, you could use a Gray code for the mux channel assignments. That is, choose the channels such that when switching between them, you only ever change one bit of the S[2:0] address word at a time.