Working keypad switch code detection.
This commit is contained in:
parent
a62cac9ca7
commit
81bb9d772d
57
main.c
57
main.c
@ -209,9 +209,9 @@
|
|||||||
|
|
||||||
|
|
||||||
// Keypad detection
|
// Keypad detection
|
||||||
// Each switch has it's own detection line
|
// Each switch has it's own detection line, inverse logic
|
||||||
#define KEYPAD_DETECT(test,switch_code) \
|
#define KEYPAD_DETECT(test,switch_code) \
|
||||||
if ( test ) { \
|
if ( !(test) ) { \
|
||||||
keypadDetectArray[switch_code]++; \
|
keypadDetectArray[switch_code]++; \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
@ -336,18 +336,14 @@ inline void pinSetup(void)
|
|||||||
|
|
||||||
void keyPressDetection( uint8_t *keys, uint8_t *validKeys) {
|
void keyPressDetection( uint8_t *keys, uint8_t *validKeys) {
|
||||||
for ( uint8_t key = 0; key < KEYBOARD_SIZE + 1; key++ ) {
|
for ( uint8_t key = 0; key < KEYBOARD_SIZE + 1; key++ ) {
|
||||||
//phex(keyDetectArray[key]);
|
if ( keys[key] & (1 << 7) ) {
|
||||||
//print ("|");
|
|
||||||
if ( keyDetectArray[key] & (1 << 7) ) {
|
|
||||||
//print("0x");
|
|
||||||
//phex( key );
|
|
||||||
pint8( key );
|
pint8( key );
|
||||||
print(" ");
|
print(" ");
|
||||||
|
|
||||||
// Too many keys
|
// Too many keys
|
||||||
if ( validKeys == 6 )
|
if ( *validKeys == 6 )
|
||||||
break;
|
break;
|
||||||
keyboard_keys[validKeys++] = defaultMap[key];
|
keyboard_keys[*validKeys++] = defaultMap[key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -399,22 +395,22 @@ int main( void )
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Check Keypad keys
|
// Check Keypad keys
|
||||||
KEYPAD_DETECT(PINA & (1 << 0,1))
|
KEYPAD_DETECT(PINA & (1 << 0),11)
|
||||||
KEYPAD_DETECT(PINA & (1 << 1,1))
|
KEYPAD_DETECT(PINA & (1 << 1),3)
|
||||||
KEYPAD_DETECT(PINA & (1 << 2,1))
|
KEYPAD_DETECT(PINA & (1 << 2),7)
|
||||||
KEYPAD_DETECT(PINA & (1 << 3,1))
|
KEYPAD_DETECT(PINA & (1 << 3),4)
|
||||||
KEYPAD_DETECT(PINA & (1 << 4,1))
|
KEYPAD_DETECT(PINA & (1 << 4),15)
|
||||||
KEYPAD_DETECT(PINA & (1 << 5,1))
|
KEYPAD_DETECT(PINA & (1 << 5),6)
|
||||||
KEYPAD_DETECT(PINA & (1 << 6,1))
|
KEYPAD_DETECT(PINA & (1 << 6),2)
|
||||||
KEYPAD_DETECT(PINA & (1 << 7,1))
|
KEYPAD_DETECT(PINA & (1 << 7),10)
|
||||||
KEYPAD_DETECT(PINF & (1 << 0,1))
|
KEYPAD_DETECT(PINF & (1 << 0),8)
|
||||||
KEYPAD_DETECT(PINF & (1 << 1,1))
|
KEYPAD_DETECT(PINF & (1 << 1),12)
|
||||||
KEYPAD_DETECT(PINF & (1 << 2,1))
|
KEYPAD_DETECT(PINF & (1 << 2),16)
|
||||||
KEYPAD_DETECT(PINF & (1 << 3,1))
|
KEYPAD_DETECT(PINF & (1 << 3),13)
|
||||||
KEYPAD_DETECT(PINF & (1 << 4,1))
|
KEYPAD_DETECT(PINF & (1 << 4),1)
|
||||||
KEYPAD_DETECT(PINF & (1 << 5,1))
|
KEYPAD_DETECT(PINF & (1 << 5),5)
|
||||||
KEYPAD_DETECT(PINF & (1 << 6,1))
|
KEYPAD_DETECT(PINF & (1 << 6),9)
|
||||||
KEYPAD_DETECT(PINF & (1 << 7,1))
|
KEYPAD_DETECT(PINF & (1 << 7),14)
|
||||||
|
|
||||||
// Check count to see if the sample threshold may have been reached, otherwise collect more data
|
// Check count to see if the sample threshold may have been reached, otherwise collect more data
|
||||||
count++;
|
count++;
|
||||||
@ -435,8 +431,8 @@ int main( void )
|
|||||||
|
|
||||||
// Detect Valid Keypresses - TODO
|
// Detect Valid Keypresses - TODO
|
||||||
uint8_t validKeys = 0;
|
uint8_t validKeys = 0;
|
||||||
keyPressDetection( &keyDetectArray, &validKeys );
|
keyPressDetection( keyDetectArray, &validKeys );
|
||||||
//keyPressDetection( &keypadDetectArray, &validKeys );
|
keyPressDetection( keypadDetectArray, &validKeys );
|
||||||
print(":\n");
|
print(":\n");
|
||||||
|
|
||||||
// TODO undo potentially old keys
|
// TODO undo potentially old keys
|
||||||
@ -444,13 +440,6 @@ int main( void )
|
|||||||
keyboard_keys[c] = 0;
|
keyboard_keys[c] = 0;
|
||||||
|
|
||||||
|
|
||||||
// Debugging Output
|
|
||||||
//phex(PINA);
|
|
||||||
//phex(PINF);
|
|
||||||
//print("\n");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Print out the current keys pressed
|
// Print out the current keys pressed
|
||||||
/*
|
/*
|
||||||
if ( keyDetectCount > 0 ) {
|
if ( keyDetectCount > 0 ) {
|
||||||
|
Reference in New Issue
Block a user