text: #pragma once
  #ifndef I2C_H
  #define I2C_H
  
  #include "stm8s.h"
  
  #define I2C_FAST        1
  #define F_MASTER_MHZ    16UL
  #define F_MASTER_HZ     16000000UL
  #ifdef I2C_FAST
  //400 кГц
  #define F_I2C_HZ        400000UL
  #else
  //100 кГц
  #define F_I2C_HZ        100000UL
  #endif // I2C_FAST
  
  //Результат выполнения операции с i2c
  typedef enum {
      I2C_SUCCESS = 0,
      I2C_TIMEOUT,
      I2C_ERROR
  } t_i2c_status;
  
  // Инициализация I2C интерфейса
  extern void i2c_master_init(void);
  
  // Запись регистра slave-устройства
  extern t_i2c_status  i2c_wr_reg(uint8_t address, uint8_t reg_addr, \
                                  const uint8_t * data, uint8_t length);
  
  extern t_i2c_status  i2c_wr_byte(uint8_t address, uint8_t byte);
  
  // Чтение регистра slave-устройства
  extern t_i2c_status  i2c_rd_reg(uint8_t address, uint8_t reg_addr, \
                                  uint8_t * data, uint8_t length);
  
  extern t_i2c_status  i2c_rd_bytes(uint8_t address, uint8_t * data, uint8_t length);
  #endif // I2C_H
  