|
|
@@ -27,12 +27,91 @@ |
|
|
|
|
|
|
|
#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) |
|
|
|
|
|
|
|
int main() |
|
|
|
#define PRE_DRIVE_SLEEP |
|
|
|
#define POST_DRIVE_SLEEP |
|
|
|
|
|
|
|
|
|
|
|
#define DRIVE_reg_1 PORTB |
|
|
|
#define DRIVE_reg_2 PORTB |
|
|
|
#define DRIVE_reg_3 PORTB |
|
|
|
#define DRIVE_reg_4 PORTC |
|
|
|
#define DRIVE_reg_5 PORTE |
|
|
|
#define DRIVE_reg_6 PORTE |
|
|
|
#define DRIVE_reg_7 PORTF |
|
|
|
#define DRIVE_reg_8 PORTF |
|
|
|
#define DRIVE_reg_9 PORTF |
|
|
|
#define DRIVE_reg_10 <blank> |
|
|
|
#define DRIVE_reg_11 <blank> |
|
|
|
#define DRIVE_reg_12 <blank> |
|
|
|
|
|
|
|
#define DRIVE_pin_1 0 |
|
|
|
#define DRIVE_pin_2 1 |
|
|
|
#define DRIVE_pin_3 2 |
|
|
|
#define DRIVE_pin_4 7 |
|
|
|
#define DRIVE_pin_5 6 |
|
|
|
#define DRIVE_pin_6 7 |
|
|
|
#define DRIVE_pin_7 0 |
|
|
|
#define DRIVE_pin_8 4 |
|
|
|
#define DRIVE_pin_9 5 |
|
|
|
#define DRIVE_pin_10 <blank> |
|
|
|
#define DRIVE_pin_11 <blank> |
|
|
|
#define DRIVE_pin_12 <blank> |
|
|
|
|
|
|
|
#define DETECT_group_1 0 |
|
|
|
#define DETECT_group_2 0 |
|
|
|
#define DETECT_group_3 0 |
|
|
|
#define DETECT_group_4 0 |
|
|
|
#define DETECT_group_5 0 |
|
|
|
#define DETECT_group_6 0 |
|
|
|
#define DETECT_group_7 0 |
|
|
|
#define DETECT_group_8 0 |
|
|
|
#define DETECT_group_9 0 |
|
|
|
#define DETECT_group_10 <blank> |
|
|
|
#define DETECT_group_11 <blank> |
|
|
|
#define DETECT_group_12 <blank> |
|
|
|
|
|
|
|
// Change number of ORDs if number of lines differ |
|
|
|
#define DD_LOOP \ |
|
|
|
for ( int c = 0;; c++ ) { \ |
|
|
|
switch ( c ) { \ |
|
|
|
DD_CASE_ORD(1) \ |
|
|
|
DD_CASE_ORD(2) \ |
|
|
|
DD_CASE_ORD(3) \ |
|
|
|
DD_CASE_ORD(4) \ |
|
|
|
DD_CASE_ORD(5) \ |
|
|
|
DD_CASE_ORD(6) \ |
|
|
|
DD_CASE_ORD(7) \ |
|
|
|
DD_CASE_ORD(8) \ |
|
|
|
DD_CASE_END(9,c) \ |
|
|
|
} \ |
|
|
|
} |
|
|
|
|
|
|
|
#define DRIVE_DETECT(reg,pin,group) \ |
|
|
|
reg |= (1 << pin);\ |
|
|
|
detection(group);\ |
|
|
|
reg &= (0 << pin); |
|
|
|
|
|
|
|
#define DD_CASE(number) \ |
|
|
|
case number:\ |
|
|
|
DRIVE_DETECT(DRIVE_reg##_##number, DRIVE_pin##_##number, DETECT_group##_##number) |
|
|
|
|
|
|
|
#define DD_CASE_ORD(number) \ |
|
|
|
DD_CASE(number) \ |
|
|
|
break; |
|
|
|
|
|
|
|
#define DD_CASE_END(number,var) \ |
|
|
|
DD_CASE(number) \ |
|
|
|
default: \ |
|
|
|
var = -1; \ |
|
|
|
break; |
|
|
|
|
|
|
|
int main(void) |
|
|
|
{ |
|
|
|
// set for 16 MHz clock |
|
|
|
CPU_PRESCALE( 0 ); |
|
|
|
|
|
|
|
// Configuring Pins |
|
|
|
|
|
|
|
// TODO |
|
|
|
|
|
|
|
// Initialize the USB, and then wait for the host to set configuration. |
|
|
@@ -46,7 +125,9 @@ int main() |
|
|
|
_delay_ms(1000); |
|
|
|
|
|
|
|
// Main Detection Loop |
|
|
|
// TODO |
|
|
|
DD_LOOP |
|
|
|
|
|
|
|
// usb_keyboard_press(KEY_B, KEY_SHIFT); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|