??? 09/19/06 14:08 Read: times |
#124560 - I was wrong again Responding to: ???'s previous message |
I set the "output/colums" as open drain with internall pullups enabled. TO my understanding this is "quasi-bidirectional" right?
OK. Well, when I said before that it worked, I was half right. I'm using ground as one of my columns. When I'm scanning a keypress, I set each column in turn High, and check the rows. If none of my columns change the row, I assume it must be the ground column which has has pulled the row low. So when I've got my coluns in open-drain, if I press a button, it scans the keypad and comes back with the button number that should be associated with the ground column. That tells me that when my code is setting the columns High to check for the current row, the column isn't able to drive the input(the row) to a high state and properly decode the keypress, therefore it assumes the ground column is the active one. SO. I'm sure this topic has been beaten to death around here, but in my searching I'm somehow still not getting that AHA! moment which is going to clear this up. I figure either: a) I'm wrong to have configured my ports this way, or b) I should be using external pullups on the columns? I tried using 10K external pullup on a column to test, but still no go. So, what glaringly obvious tidbit am I not catching here? |