aboutsummaryrefslogtreecommitdiff
path: root/keyboards/vitamins_included/i2c.h
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/vitamins_included/i2c.h')
-rw-r--r--keyboards/vitamins_included/i2c.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/keyboards/vitamins_included/i2c.h b/keyboards/vitamins_included/i2c.h
new file mode 100644
index 000000000..739d134be
--- /dev/null
+++ b/keyboards/vitamins_included/i2c.h
@@ -0,0 +1,50 @@
1#ifndef I2C_H
2#define I2C_H
3
4#include <stdint.h>
5#include "split_util.h"
6
7#ifndef F_CPU
8#define F_CPU 16000000UL
9#endif
10
11#define I2C_READ 1
12#define I2C_WRITE 0
13
14#define I2C_ACK 1
15#define I2C_NACK 0
16
17#define SLAVE_BUFFER_SIZE 0x10
18
19// i2c SCL clock frequency
20#define SCL_CLOCK 400000L
21
22extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
23
24void i2c_master_init(void);
25uint8_t i2c_master_start(uint8_t address);
26void i2c_master_stop(void);
27uint8_t i2c_master_write(uint8_t data);
28uint8_t i2c_master_read(int);
29void i2c_reset_state(void);
30void i2c_slave_init(uint8_t address);
31
32
33static inline unsigned char i2c_start_read(unsigned char addr) {
34 return i2c_master_start((addr << 1) | I2C_READ);
35}
36
37static inline unsigned char i2c_start_write(unsigned char addr) {
38 return i2c_master_start((addr << 1) | I2C_WRITE);
39}
40
41// from SSD1306 scrips
42extern unsigned char i2c_rep_start(unsigned char addr);
43extern void i2c_start_wait(unsigned char addr);
44extern unsigned char i2c_readAck(void);
45extern unsigned char i2c_readNak(void);
46extern unsigned char i2c_read(unsigned char ack);
47
48#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
49
50#endif