Basic matrix module for the hall effect keypad now working.
- Includes new "table pinning" setup (much easier to understand) - Matrix layouts will be split into their own dependent modules later - Changed the HID Raw view id (too many teensy devices on this computer...) - Moved the macro processing outside of the usb timer signal (this will be slower overall, but will result in more consistant behaviour)
This commit is contained in:
parent
46916defa5
commit
6557022f20
11 changed files with 259 additions and 139 deletions
|
|
@ -21,8 +21,16 @@
|
|||
|
||||
// ----- Includes -----
|
||||
|
||||
// AVR Includes
|
||||
#include <avr/interrupt.h>
|
||||
|
||||
// Project Includes
|
||||
#include <led.h>
|
||||
#include <print.h>
|
||||
|
||||
// Local Includes
|
||||
#include "scan_loop.h"
|
||||
#include "matrix_scan.h"
|
||||
|
||||
|
||||
|
||||
|
|
@ -40,9 +48,8 @@
|
|||
// If the number of samples is higher than the sample threshold, flag the high bit, clear otherwise
|
||||
// This should be resetting VERY quickly, cutting off a potentially valid keypress is not an issue
|
||||
#define DEBOUNCE_ASSESS(table,size) \
|
||||
for ( uint8_t key = 1; key < size + 1; key++ ) {\
|
||||
table[key] = ( table[key] & ~(1 << 7) ) > SAMPLE_THRESHOLD ? (1 << 7) : 0x00; \
|
||||
} \
|
||||
for ( uint8_t key = 1; key < size + 1; key++ ) \
|
||||
table[key] = ( table[key] & ~(1 << 7) ) > SAMPLE_THRESHOLD ? (1 << 7) : 0x00
|
||||
|
||||
|
||||
|
||||
|
|
@ -51,29 +58,39 @@
|
|||
// Keeps track of the number of scans, so we only do a debounce assess when it would be valid (as it throws away data)
|
||||
uint8_t scan_count = 0;
|
||||
|
||||
// This is where the matrix scan data is held, as well as debouncing is evaluated to, which (depending on the read value) is handled
|
||||
// by the macro module
|
||||
uint8_t KeyIndex_Array[KEYBOARD_SIZE + 1];
|
||||
|
||||
|
||||
|
||||
// ----- Functions -----
|
||||
|
||||
// Setup
|
||||
void scan_setup()
|
||||
inline void scan_setup()
|
||||
{
|
||||
//matrix_pinSetup( matrix_pinout );
|
||||
matrix_pinSetup( (uint8_t*)matrix_pinout );
|
||||
}
|
||||
|
||||
// Main Detection Loop
|
||||
void scan_loop()
|
||||
inline uint8_t scan_loop()
|
||||
{
|
||||
//matrix_scan( matrix_pinout, keyboardDetectArray );
|
||||
|
||||
// Check count to see if the sample threshold may have been reached, otherwise collect more data
|
||||
if ( scan_count++ < MAX_SAMPLES )
|
||||
return;
|
||||
{
|
||||
matrix_scan( (uint8_t*)matrix_pinout, KeyIndex_Array );
|
||||
|
||||
// Signal Main Detection Loop to continue scanning
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Reset Sample Counter
|
||||
scan_count = 0;
|
||||
|
||||
// Assess debouncing sample table
|
||||
//DEBOUNCE_ASSESS(keyDetectArray,KEYBOARD_SIZE)
|
||||
DEBOUNCE_ASSESS( KeyIndex_Array, KeyIndex_Size );
|
||||
|
||||
// Ready to allow for USB send
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue