TCA 8418 freezing after input, i2c problem

I am trying to make key matrix using TCA8418. So far I have managed to set the chip up, I am able to read, but whenever I press button, which is part of the matrix the chip freezes. The interupti is not aserted and I recieve NACK when I try to talk to it. I am includig the code and schematics. I am using teensy 3.2. And I am not using the diodes, that are in the schematics.


Do someone have any idea what is going on? The chip is soldered well.
Code:
#include <Wire.h>

#include <WireKinetis.h>

#include "Wire.h"

#define adress 0x34
#define row 0x07
#define col 0x0F

void setup() {
pinMode(11, INPUT_PULLUP);
pinMode(13, OUTPUT);
  Serial.begin(9600);
  delay(1000);
  Serial.println("setup begin");
  Wire.begin();
  
  Wire.beginTransmission(0x34);
            Serial.println("setup");
  Wire.write(0x01);
             Serial.println("setup");
  Wire.write(0x81);   //initial setup of the chip
            Serial.println("setup");
int n = Wire.endTransmission();

Serial.println(n);

Serial.println("setup");

   Wire.beginTransmission(adress);
   Wire.write(0x1D);    
   Wire.write(row); // set row 1
  n = Wire.endTransmission();
  Serial.println(n);
Serial.println("setup");
    Wire.beginTransmission(adress);
    Wire.write(0x1E);
    Wire.write(col); //set colum 1-4
    n = Wire.endTransmission();

      Wire.beginTransmission(adress);
   Wire.write(0x29);    
   Wire.write(row); // set debounce for row 1
  n = Wire.endTransmission();
  Serial.println(n);

    Wire.beginTransmission(adress);
   Wire.write(0x2A);    
   Wire.write(col); // set row 1
  n = Wire.endTransmission();
  Serial.println(n);
  
     Serial.println("setup done");
    Serial.println(n);
}
byte REG;
void loop() {

  int INTERUPPT = digitalRead(11);
  if(INTERUPPT == LOW)
  {
     digitalWrite(13, HIGH);
  }
  
  delay(1000);
  
  
    Wire.beginTransmission(0x34);
    Wire.write(0x1E);
    Serial.print("prenos: ");
   int m = Wire.endTransmission();
   Serial.println(m);
    Wire.requestFrom(0x34, 1);        // request 1 byte(s) from slave device.  
    while(Wire.available())             // slave may send less than requested.  
     {
      
      
      REG = Wire.read();  
      Serial.print("reg: ");
      Serial.println(REG);
      
     }
  
 // delay(1000);


}
I hope someone will have some idea about what is going on.
 

Attachments

  • sch0ma.jpg
    sch0ma.jpg
    20.5 KB · Views: 105
Back
Top