diff --git a/common/led_matrix.c b/common/led_matrix.c index 2a1e83d2..77e52e48 100644 --- a/common/led_matrix.c +++ b/common/led_matrix.c @@ -18,3 +18,32 @@ along with this program. If not, see . #include #include #include "led_matrix.h" + +#define LED_MATRIX_TIMER_TOP F_CPU/(256*64)/LED_MATRIX_ROWS + +void led_matrix_init(void) +{ + /* Timer1 setup */ + /* CTC mode */ + TCCR1B |= (1<> 8) & 0xFF; + OCR1AL = LED_MATRIX_TIMER_TOP & 0xFF; + SREG = sreg; +} + +void led_matrix_enable(void) +{ + /* Enable Compare Match Interrupt */ + TIMSK1 |= _BV(OCIE1A); +} + +void led_matrix_disable(void) +{ + /* Disable Compare Match Interrupt */ + TIMSK1 &= ~_BV(OCIE1A); +} diff --git a/common/led_matrix.h b/common/led_matrix.h index f683ff09..eb242446 100644 --- a/common/led_matrix.h +++ b/common/led_matrix.h @@ -31,11 +31,17 @@ typedef struct { uint8_t value; } led_matrix_element_t; +#ifdef LED_MATRIX_ENABLE uint8_t led_matrix_rows(void); uint8_t led_matrix_cols(void); void led_matrix_init(void); void led_matrix_enable(void); void led_matrix_disable(void); uint8_t led_matrix_scan(void); +#else +#define led_matrix_rows() +#define led_matrix_cols() +#define led_matrix_init() +#endif #endif diff --git a/keyboard/gh60/led_matrix.c b/keyboard/gh60/led_matrix.c new file mode 100644 index 00000000..a3525cc3 --- /dev/null +++ b/keyboard/gh60/led_matrix.c @@ -0,0 +1,17 @@ +/* +Copyright 2013,2014 Kai Ryu + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +