|
|
@ -21,8 +21,8 @@ |
|
|
|
|
|
|
|
|
|
|
|
extern i2c_status_t mcp23018_status; |
|
|
|
extern i2c_status_t mcp23018_status; |
|
|
|
#define I2C_TIMEOUT 1000 |
|
|
|
#define I2C_TIMEOUT 1000 |
|
|
|
#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) |
|
|
|
|
|
|
|
#define CPU_16MHz 0x00 |
|
|
|
#define XXX KC_NO |
|
|
|
|
|
|
|
|
|
|
|
// I2C aliases and register addresses (see "mcp23018.md")
|
|
|
|
// I2C aliases and register addresses (see "mcp23018.md")
|
|
|
|
#define I2C_ADDR 0x20 // 0b0100000
|
|
|
|
#define I2C_ADDR 0x20 // 0b0100000
|
|
|
@ -41,16 +41,15 @@ uint8_t init_mcp23018(void); |
|
|
|
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
|
|
|
|
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
|
|
|
|
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
|
|
|
|
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
|
|
|
|
L30, L31, L32, R30, R31, R32 \
|
|
|
|
L30, L31, L32, R30, R31, R32 \
|
|
|
|
) \
|
|
|
|
) { \
|
|
|
|
{ \
|
|
|
|
{ L04, L14, L24, XXX }, \
|
|
|
|
{L04, L14, L24, KC_NO}, \
|
|
|
|
{ L03, L13, L23, L32 }, \
|
|
|
|
{L03, L13, L23, L32}, \
|
|
|
|
{ L02, L12, L22, L31 }, \
|
|
|
|
{L02, L12, L22, L31}, \
|
|
|
|
{ L01, L11, L21, L30 }, \
|
|
|
|
{L01, L11, L21, L30}, \
|
|
|
|
{ L00, L10, L20, XXX }, \
|
|
|
|
{L00, L10, L20, KC_NO}, \
|
|
|
|
{ R00, R10, R20, XXX }, \
|
|
|
|
{R00, R10, R20, KC_NO}, \
|
|
|
|
{ R01, R11, R21, R30 }, \
|
|
|
|
{R01, R11, R21, R30}, \
|
|
|
|
{ R02, R12, R22, R31 }, \
|
|
|
|
{R02, R12, R22, R31}, \
|
|
|
|
{ R03, R13, R23, R32 }, \
|
|
|
|
{R03, R13, R23, R32}, \
|
|
|
|
{ R04, R14, R24, XXX } \
|
|
|
|
{R04, R14, R24, KC_NO}, \
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|