]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
Initial macro line filler design for multiple keyboards matrices.
authorJacob Alexander <triplehaata@gmail.com>
Mon, 7 Mar 2011 18:42:32 +0000 (10:42 -0800)
committerJacob Alexander <triplehaata@gmail.com>
Mon, 7 Mar 2011 18:42:32 +0000 (10:42 -0800)
main.c

diff --git a/main.c b/main.c
index 36e8597f37f41b6d79e1f2d472804c8122e11165..2b5494835f06e53440afa5d12e1bcaee6429cbc3 100644 (file)
--- a/main.c
+++ b/main.c
 
 #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;
 }