43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
#ifndef _I2CMASTER_H
|
||
#define _I2CMASTER_H
|
||
|
||
// флаг, отвечающий за чтение данных по i2c
|
||
#define I2C_READ 1
|
||
|
||
// флаг, отвечающий за отправку данных по i2c
|
||
#define I2C_WRITE 0
|
||
|
||
// частота тактирования линии в Герцах
|
||
#define SCL_CLOCK 100000L
|
||
|
||
// инициализация интерфейса
|
||
void i2c_init(void);
|
||
|
||
// передача условия СТОП на шину
|
||
void i2c_stop(void);
|
||
|
||
// передача условия СТАРТ на шину
|
||
unsigned char i2c_start(unsigned char addr);
|
||
|
||
// повторный старт(перезапуск)
|
||
unsigned char i2c_rep_start(unsigned char addr);
|
||
|
||
// ждем, если устрой-во занято, а потом передаем условие СТАРТ на шину
|
||
void i2c_start_wait(unsigned char addr);
|
||
|
||
// отправка данных
|
||
unsigned char i2c_write(unsigned char data);
|
||
|
||
// читаем данные и продолжаем вещание
|
||
unsigned char i2c_readAck(void);
|
||
|
||
// читаем данные и после их получения передаем услови СТОП
|
||
unsigned char i2c_readNak(void);
|
||
|
||
// читаем данные с шины
|
||
unsigned char i2c_read(unsigned char ack);
|
||
|
||
// выбираем какой варинт чтения данных будет
|
||
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
|
||
#endif
|