#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