[Help] Having trouble with 1 row with Soarer's Controller (Televideo)

User avatar
snacksthecat
✶✶✶✶

02 Sep 2018, 17:15

Hi Guys,
I'm trying to convert my Televideo board to USB using Soarer's controller. I originally wanted to convert the board at a protocol level but ultimately abandoned that idea when I realized this board natively has some limitations that would result in no NKRO and weird debounce issues. Based on that, I figured that matrixing it out would work better.
Spoiler:
Image
Unfortunately one of the rows is malfunctioning and registering multiple keys no matter which key in the row that I'm pressing. For instance, if I press "DELETE", it thinks I'm also pressing "INSERT", "ENTER", "BACK_QUOTE", and "PAD_0".

Image

Here is my layout configuration with the troublesome row highlighted:

Image

I've tried a few different things now to isolate the problem but have come up empty so far. I've tries hooking this row up to a different pin on the teensy and I've also tested the matrix with an arduino sketch I wrote for matrix debugging and confirmed that my debugging program is registering correctly the single key presses.

Now I'm kind of split between a few different things. I'm unsure whether this is a hardware problem or something that can be corrected with one of Soarer's configuration settings. I'd give it a shot with TMK but I wanted to check here first to see if anyone has any ideas what the problem might be before I invest the time.

I'm interested to see if anyone here has experience with this controller firmware and might know what the issue is.

Thanks!

User avatar
snacksthecat
✶✶✶✶

02 Sep 2018, 17:23

To expand on this, I realized the problem is only happening with the "DELETE" key. If I try other keys in that row, they all work fine. Is there something weird about space invaders where a single bad switch could cause a problem like this?

User avatar
Noobmaen

02 Sep 2018, 17:26

I have had a very similar problem when replacing the controller of my olympia people keyboard, where I soldered in a switch in wrong orientation after cleaning it, causing its internal jumper to connect a row to all columns. Due to my board not having diodes, every key in that row suffered from the problem. Assuming your board has the same issue, I don't know why your matrix tester doesn't pick it up though

User avatar
snacksthecat
✶✶✶✶

02 Sep 2018, 20:19

Thanks Noobmaen. I'll try to replace the switch and see if that makes any difference.

For anyone whose interested, here's my little arduino matrix debug sketch:

Code: Select all

byte cols[] = {18,19,20,21,22,23,24,25,26};
const int colCount = sizeof(cols)/sizeof(cols[0]);

byte rows[] = {27,0,1,2,3,4,5,6,7,8,9,10,11,12,13};
const int rowCount = sizeof(rows)/sizeof(rows[0]);
 
void setup() {
  for (int x=0; x<colCount; x++) {
    pinMode(cols[x], INPUT_PULLUP);
  }
  
  for(int x=0; x<rowCount; x++) {
      pinMode(rows[x], INPUT);
  }
  Serial.begin(115200);
}

void loop() {
  // Iterate rows
  for (int rowIndex=0; rowIndex < rowCount; rowIndex++) {
  
    
    // Current row
    byte curRow = rows[rowIndex];
    pinMode(curRow, OUTPUT);
    digitalWrite(curRow, LOW);

    // Iterate columns
    for (int colIndex=0; colIndex < colCount; colIndex++) {
      
      // Current col
      byte curCol = cols[colIndex];
      if(digitalRead(curCol) == LOW) {
        
        // Hit!
        Serial.print("Row: ");
        Serial.print(rowIndex);
        Serial.print(" | Col: ");
        Serial.println(colIndex);
      }
      
    }
    pinMode(curRow, INPUT);
  }
}
Just plug in the row and column pins at the top and it will output the indexes in the serial console.

JBert

04 Sep 2018, 17:17

Is this a Teensy++ as the card on your desk seems to imply?

I was thinking about how you've connected PD6 to the keyboard. I have had trouble with that, so you'd better use another port because it cannot be properly read.

Of course, the odd thing is that the row which is failing for you is PC2. I haven't really got an explanation for that ATM...

User avatar
snacksthecat
✶✶✶✶

08 Sep 2018, 19:01

Thanks JBert, that's a very good point and I've switched up the wiring to avoid PD6 to eliminate that from the equation (yes it's a Teensy++ 2.0).

I had some time this morning so I tried with TMK and unfortunately have the same issue (plus another row that is doing this as well now).

Not sure what to try next. If it was a problem with a useless key like scroll lock I could live with it.

The guy who posted the matrix said that he had to desolder one of the resistors to isolate something or other (this obviously went over my head). Something about how the rows go through another IC rather than being connected straight to the main IC. Wondering if I should try that next.

User avatar
snacksthecat
✶✶✶✶

08 Sep 2018, 20:02

Great success! I removed all of the resistors and everything is working great now. Thanks again for the help :)

Post Reply

Return to “Workshop”