]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergotaco/ergotaco.h
[Keyboard] Snagpad Configurator bugfix and readme refactor (#6381)
[qmk_firmware.git] / keyboards / ergotaco / ergotaco.h
1 #pragma once
2 #include <util/delay.h>
3 #include <stdint.h>
4 #include <stdbool.h>
5 #include "quantum.h"
6 #include "i2c_master.h"
7 #include "matrix.h"
8
9
10 extern i2c_status_t mcp23018_status;
11 #define ERGODOX_EZ_I2C_TIMEOUT 1000
12 #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
13 #define CPU_16MHz       0x00
14
15 // I2C aliases and register addresses (see "mcp23018.md")
16 //#define I2C_ADDR        0b0100000
17 #define I2C_ADDR        0x20
18 #define I2C_ADDR_WRITE  ( (I2C_ADDR<<1) | I2C_WRITE )
19 #define I2C_ADDR_READ   ( (I2C_ADDR<<1) | I2C_READ  )
20 #define IODIRA          0x00            // i/o direction register
21 #define IODIRB          0x01
22 #define GPPUA           0x0C            // GPIO pull-up resistor register
23 #define GPPUB           0x0D
24 #define GPIOA           0x12            // general purpose i/o port register (write modifies OLAT)
25 #define GPIOB           0x13
26 #define OLATA           0x14            // output latch register
27 #define OLATB           0x15
28
29 void init_ergodox(void);
30 uint8_t init_mcp23018(void);
31
32 /*  ---------- LEFT HAND -----------   ---------- RIGHT HAND ---------- */
33 #define LAYOUT(                                                          \
34     L00,L01,L02,L03,L04,L05,                   R00,R01,R02,R03,R04,R05)  \
35                                                                          \
36    /* matrix positions */                                                \
37     {                   \
38     {R00},     \
39     {R01},     \
40     {R02},     \
41     {R03},     \
42     {R04},     \
43     {R05},     \
44     {L05},     \
45     {L04},     \
46     {L03},     \
47     {L02},     \
48     {L01},     \
49     {L00},     \
50 }