RTL00_WEB/project/inc/ina219/ina219drv.h
2017-05-29 01:43:16 +03:00

55 lines
1.8 KiB
C

/**************************************************************************
* Драйвер для INA219
**************************************************************************/
#ifndef _INA219DRV_H_
#define _INA219DRV_H_
#include "ina219/ina219.h"
#include "device.h"
#include "timer_api.h"
#include "driver/i2c_drv.h"
typedef struct _ina219_data {
union {
signed short voltage; // Voltage, 1mV
unsigned char vuc[2];
} v;
union {
signed short current; // Current, 50uA?
unsigned char iuc[2];
} i;
} INA219DATA, *PINA219DATA;
typedef struct _ina219drv {
unsigned char status;
unsigned char addr; // адрес INA219 на шине I2C (формат 7 bit)
signed char init;
unsigned char tmp;
unsigned short config; // регистр конфигурации INA219
unsigned short calibration; // коэф. шунта для INA219
unsigned short count; // счетчик считанных значений
unsigned short overrun; // счет переполнений буфера
unsigned short errs; // счет ошибок на I2C
unsigned short buf_idx; // объем буфера pbuf[buf_idx+1], максимальный индекс-номер замера
unsigned short buf_rx; // индекс-номер ещё не считанного замера
unsigned short buf_tx; // индекс-номер для записи следующего замера
PINA219DATA pbuf;
gtimer_t timer;
union { // буфер
unsigned char uc[4];
unsigned short us[2];
signed short ss[2];
unsigned int ui;
} buf_i2c;
volatile i2c_drv_t i2c;
} INA219DRV, *PINA219DRV;
#define INA219_I2C_PIN_SDA PC_4
#define INA219_I2C_PIN_SCL PC_5
#define INA219_I2C_BUS_CLK 300000 //hz
#define INA219_TIMER TIMER3 // используемый таймер
#endif // _INA219DRV_H_