This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TCA8418 issue

Other Parts Discussed in Thread: TCA8418, TCA8418E

Hi,

I am controlling TCA8418 from arduino uno, I am also using interrupt.

I have 4x4 keypad connected to the chip. 

I had no problem with the setup and it was working perfectly for one day.

But today it suddenly started to generate key press event by it self.

I've disconnected interrupt, resoldered chip, checked all pcb paths but still no luck.

I also did power-on reset.

Now I have minimal test code which reads 0x04 register every second.

I am not pressing any key. And the sequence from 0x04 register looks like this:

0,0,0,0,0,0,0,0,0,0,0,0,11111111,11111111,11,0,0,0,0,0,0,0,0,0,0,0,011111111,11111111,11,0,0,0,0,0,0,10001010,10001010,10,0,0,0 etc.

Could this be a faulty chip or am I missing something ?

Thanks.

  • Hello Kamil,

    Thanks for the question.

    It is very interesting that you are suddenly having this issue. The fact that it randomly started happening makes me think that some physical damage has happened to the device, whether that be to the PCB traces, or to the TCA8418 itself.

    Do you by any chance have another TCA8418 you can try using?

    Is it possible that the switches may have some physical damage to them? Such as water shorting it out intermittently, or traces are damaged? You mentioned you looked at them and they seem to be ok. Did you check the impedance between the traces?

    Is there a chance that someone might've handled this in a way as to induce ESD damage? The TCA8418E is the same part as the TCA8418, but has improved ESD protection. An ESD event to one of the pins can damage it in a way that the device is unable to read the pins, which could cause something like this.

  • I think, the exact chip model I have is TCA8418RTWR. I cannot find info, if this one has improved ESD protection.
    I have two more chips to try, but unfortunatelly I've demaged one of the pads on my dev board while soldering. I have to prepare new one.
    This time I will split it from the keyboard to be able to disconnect it at any time.
    Every switch worked just fine, they were brand new.
    I have soldered everything in the mordning, tested it for the whole day.
    I've placed it in the drawer for the night. Next day in the morning it was broken.
    The day it was working, I've expierienced few hangs after a long time of inactivity.
    I did not solder the thermal pad though.
    But software might had been the cause, after some tweaks it seemed ok.
    If it comes to ESD demage, it seats on the dev board, I wasn't to gentle ;)
    But I don't think I could do something to expose it to that kind of threat.

    Regards.
  • Kamil,

    Just to be clear with the TCA8418, it does need to have the register values re-written to it on every startup/reset, otherwise it'll run default values. There is no EEPROM or non-volatile memory to store settings.

    There are 2 versions of the TCA8418 device:
    TCA8418 - THe version you have. The "RTWR" at the end is the package designation.
    TCA8418E - Has improved ESD Protection, but is functionality equivalent to the TCA8418

    I'm not sure how you connect the TCA8418 to a master or what master you're using (MSP430, or something else?), but the master does need to write all the register values to the register upon every startup.
  • Yes, I am setting registers on every startup.
    Anyway, even with default registers, it shouldn't generate key press event by it self.
    My master is Arduino UNO (ATmega328).
    Unfortunatelly, my laptop also broke today, I have my schematic of the dev board on it.
    As soon as I will be able to retrieve data from it, I will post it.

    Regards.
  • Hi,

    I manged to retrieve schematic, here it is:

    i172.photobucket.com/.../tca8418_schem_zpsiuufraqe.png

    Regards.

  • Hi Kamil,

    Your schematic appears to be doing everything as recommended. Only thing I'd like to double check on is the capacitor on the VCC node. I'm assuming it is 100nF and it should be placed as close to VCC pin as possible.

    You mentioned you were able to get it working again with a software change? Or are you still having the issues?

    In the past, I have noticed that you can sometimes get weird interrupt output if debouncing is disabled, and your buttons bounce.

    Just to verify, registers 0x29,0x2A, and 0x2B shoulld all be 0'd out (which is by default). 0 = debounce enabled, 1 = debounce disabled.

    If you are still having issues, can you provide the readouts of the configuration registers?
  • Jonathan,

    Yes, capacitor is 100nF.
    Right now I am unable to verify anything as my test pcb is broken.
    Probably tomorrow I will solder everything again and proceed with testing.
    Debouncing was enabled (At least I did not modify 0x29,0x2A, 0x2B registers). I forgot to read those registers.
    I recall, that in the morning ,first key press I did (Button1- COL0,ROW0), ocurred as three.
    Read out from 0x02 register was 00010001 (CAD_INT bit was set).
    I know that this device has internal pull-ups on rows, but maybe I should add external ones also ?
    But if it worked in that setup for over 12h, that shouldn't be the case...

    Thanks and regards.
  • You are correct that there are internal pull ups. External pull ups are not recommended in keyscan mode.

    Very interesting... Software doesn't just change overnight, I would like to see what happens with a new board.
  • I managed to prepare new pcb with brand new chip. I've tested it for few hours and it works perfectly :)
    So it must have been a faulty chip. I can not wait to try it tomorrow ;)

    Regards.

  • Glad to hear it seems to be a faulty chip. If I were to guess, i'd venture that some ESD or inrush event caused damage.

    However, you can try soldering the faulty chip onto the board and see if the IC functions.