]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/xd96/pca9555.h
[Keyboard] Inital port of xd96 (#5401)
[qmk_firmware.git] / keyboards / xd96 / pca9555.h
1 /* Copyright 2019
2  *
3  * This program is free software: you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License as published by
5  * the Free Software Foundation, either version 2 of the License, or
6  * (at your option) any later version.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16 #pragma once
17
18 /*
19             PCA9555
20          ,----------.
21    SDA --| SDA  P00 |-- P1
22    SCL --| SCL  P01 |-- P2
23    INT --| INT  P02 |-- P3
24          |      P03 |-- P4
25    A0  --| A0   P04 |-- P5
26    A1  --| A1   P05 |-- P6
27    A2  --| A2   P06 |-- P7
28          |      P07 |-- P8
29          |          |      
30          |      P10 |-- P10
31          |      P11 |-- P11
32          |      P12 |-- P12
33          |      P13 |-- P13
34          |      P14 |-- P14
35          |      P15 |-- P15
36          |      P16 |-- P16
37          |      P17 |-- P17
38          `----------'      
39 */
40
41 #define PCA9555_PORT0 0
42 #define PCA9555_PORT1 1
43
44 #define ALL_OUTPUT 0
45 #define ALL_INPUT 0xFF
46 #define ALL_LOW 0
47 #define ALL_HIGH 0xFF
48
49 void pca9555_init(uint8_t slave_addr);
50
51 void pca9555_set_config(uint8_t slave_addr, uint8_t port, uint8_t conf);
52
53 void pca9555_set_output(uint8_t slave_addr, uint8_t port, uint8_t conf);
54
55 uint8_t pca9555_readPins(uint8_t slave_addr, uint8_t port);