MistrKernnunos
Member
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.
I hope someone will have some idea about what is going on.
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);
}