commit
						c0c69a1a7c
					
				
					 9 changed files with 22 additions and 25 deletions
				
			
		| 
						 | 
				
			
			@ -2,8 +2,10 @@
 | 
			
		|||
#define CONFIG_DEFINITIONS_H
 | 
			
		||||
 | 
			
		||||
/* diode directions */
 | 
			
		||||
#define COL2ROW 0
 | 
			
		||||
#define ROW2COL 1
 | 
			
		||||
#define COL2ROW       0
 | 
			
		||||
#define ROW2COL       1
 | 
			
		||||
#define CUSTOM_MATRIX 2 /* Disables built-in matrix scanning code */
 | 
			
		||||
 | 
			
		||||
/* I/O pins */
 | 
			
		||||
#ifndef F0
 | 
			
		||||
    #define B0 0x30
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,7 +70,7 @@ void I2C_WriteBit(unsigned char c)
 | 
			
		|||
 | 
			
		||||
// Inits bitbanging port, must be called before using the functions below
 | 
			
		||||
//
 | 
			
		||||
void I2C_Init()
 | 
			
		||||
void I2C_Init(void)
 | 
			
		||||
{
 | 
			
		||||
    I2C_PORT &= ~ ((1 << I2C_DAT) | (1 << I2C_CLK));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ void I2C_Init()
 | 
			
		|||
 | 
			
		||||
// Send a START Condition
 | 
			
		||||
//
 | 
			
		||||
void I2C_Start()
 | 
			
		||||
void I2C_Start(void)
 | 
			
		||||
{
 | 
			
		||||
    // set both to high at the same time
 | 
			
		||||
    I2C_DDR &= ~ ((1 << I2C_DAT) | (1 << I2C_CLK));
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +97,7 @@ void I2C_Start()
 | 
			
		|||
 | 
			
		||||
// Send a STOP Condition
 | 
			
		||||
//
 | 
			
		||||
void I2C_Stop()
 | 
			
		||||
void I2C_Stop(void)
 | 
			
		||||
{
 | 
			
		||||
    I2C_CLOCK_HI();
 | 
			
		||||
    _delay_us(I2C_DELAY);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,13 +60,14 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		|||
    extern const matrix_row_t matrix_mask[];
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW)
 | 
			
		||||
static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
 | 
			
		||||
static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* matrix state(1:on, 0:off) */
 | 
			
		||||
static matrix_row_t matrix[MATRIX_ROWS];
 | 
			
		||||
 | 
			
		||||
static matrix_row_t matrix_raw[MATRIX_ROWS];
 | 
			
		||||
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -76,7 +77,7 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS];
 | 
			
		|||
    static void unselect_rows(void);
 | 
			
		||||
    static void select_row(uint8_t row);
 | 
			
		||||
    static void unselect_row(uint8_t row);
 | 
			
		||||
#else // ROW2COL
 | 
			
		||||
#elif (DIODE_DIRECTION == ROW2COL)
 | 
			
		||||
    static void init_rows(void);
 | 
			
		||||
    static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col);
 | 
			
		||||
    static void unselect_cols(void);
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +134,7 @@ uint8_t matrix_cols(void) {
 | 
			
		|||
//         /* PORTxn */
 | 
			
		||||
//         _SFR_IO8((col_pins[c] >> 4) + 2) |= _BV(col_pins[c] & 0xF);
 | 
			
		||||
//     }
 | 
			
		||||
// #else
 | 
			
		||||
// #elif (DIODE_DIRECTION == ROW2COL)
 | 
			
		||||
//     for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) {
 | 
			
		||||
//         /* DDRxn */
 | 
			
		||||
//         _SFR_IO8((col_pins[c] >> 4) + 1) |= _BV(col_pins[c] & 0xF);
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +159,7 @@ void matrix_init(void) {
 | 
			
		|||
#if (DIODE_DIRECTION == COL2ROW)
 | 
			
		||||
    unselect_rows();
 | 
			
		||||
    init_cols();
 | 
			
		||||
#else // ROW2COL
 | 
			
		||||
#elif (DIODE_DIRECTION == ROW2COL)
 | 
			
		||||
    unselect_cols();
 | 
			
		||||
    init_rows();
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -166,7 +167,6 @@ void matrix_init(void) {
 | 
			
		|||
    // initialize matrix state: all keys off
 | 
			
		||||
    for (uint8_t i=0; i < MATRIX_ROWS; i++) {
 | 
			
		||||
        matrix[i] = 0;
 | 
			
		||||
        matrix_raw[i] = 0;
 | 
			
		||||
        matrix_debouncing[i] = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -194,7 +194,7 @@ uint8_t matrix_scan(void)
 | 
			
		|||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#else // ROW2COL
 | 
			
		||||
#elif (DIODE_DIRECTION == ROW2COL)
 | 
			
		||||
 | 
			
		||||
    // Set col, read rows
 | 
			
		||||
    for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -336,7 +336,7 @@ static void unselect_rows(void)
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#else // ROW2COL
 | 
			
		||||
#elif (DIODE_DIRECTION == ROW2COL)
 | 
			
		||||
 | 
			
		||||
static void init_rows(void)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		|||
#define MATRIX_COL_PINS { F1, F0, B0 }
 | 
			
		||||
#define UNUSED_PINS
 | 
			
		||||
 | 
			
		||||
/* COL2ROW or ROW2COL */
 | 
			
		||||
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
 | 
			
		||||
#define DIODE_DIRECTION COL2ROW
 | 
			
		||||
 
 | 
			
		||||
// #define BACKLIGHT_PIN B7
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue