Go to the documentation of this file.
28 #ifndef PWRMETER330A_H
29 #define PWRMETER330A_H
39 #ifdef PREINIT_SUPPORTED
43 #ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49 #include "drv_digital_out.h"
50 #include "drv_digital_in.h"
51 #include "drv_i2c_master.h"
73 #define PWRMETER330A_REG_EEPROM_0B 0x0B
74 #define PWRMETER330A_REG_EEPROM_0C 0x0C
75 #define PWRMETER330A_REG_EEPROM_0D 0x0D
76 #define PWRMETER330A_REG_EEPROM_0E 0x0E
77 #define PWRMETER330A_REG_EEPROM_0F 0x0F
86 #define PWRMETER330A_REG_SHADOW_1B 0x1B
87 #define PWRMETER330A_REG_SHADOW_1C 0x1C
88 #define PWRMETER330A_REG_SHADOW_1D 0x1D
89 #define PWRMETER330A_REG_SHADOW_1E 0x1E
90 #define PWRMETER330A_REG_SHADOW_1F 0x1F
96 #define PWRMETER330A_REG_VOLATILE_20 0x20
97 #define PWRMETER330A_REG_VOLATILE_21 0x21
98 #define PWRMETER330A_REG_VOLATILE_22 0x22
99 #define PWRMETER330A_REG_VOLATILE_25 0x25
100 #define PWRMETER330A_REG_VOLATILE_26 0x26
101 #define PWRMETER330A_REG_VOLATILE_27 0x27
102 #define PWRMETER330A_REG_VOLATILE_28 0x28
103 #define PWRMETER330A_REG_VOLATILE_29 0x29
104 #define PWRMETER330A_REG_VOLATILE_2A 0x2A
105 #define PWRMETER330A_REG_VOLATILE_2C 0x2C
106 #define PWRMETER330A_REG_VOLATILE_2D 0x2D
107 #define PWRMETER330A_REG_VOLATILE_2F 0x2F
108 #define PWRMETER330A_REG_VOLATILE_30 0x30
126 #define PWRMETER330A_CUST_ACCESS_CODE 0x4F70656Eul
127 #define PWRMETER330A_CUST_ACCESS_CODE_CLEAR 0x00000000ul
133 #define PWRMETER330A_VEVENT_CYCS_MASK 0x0000003Ful
134 #define PWRMETER330A_OVERVREG_MASK 0x00003F00ul
135 #define PWRMETER330A_UNDERVREG_MASK 0x000FC000ul
136 #define PWRMETER330A_DELAYCNT_SEL_MASK 0x00100000ul
137 #define PWRMETER330A_HALFCYCLC_EN_MASK 0x00200000ul
138 #define PWRMETER330A_SQUAREWAVE_EN_MASK 0x00400000ul
139 #define PWRMETER330A_ZEROCROSSCHANSEL_MASK 0x00800000ul
140 #define PWRMETER330A_ZEROCROSSEDGESEL_MASK 0x01000000ul
141 #define PWRMETER330A_ECC_MASK 0xFC000000ul
142 #define PWRMETER330A_OVERVREG_MAX 63
143 #define PWRMETER330A_UNDERVREG_MAX 63
144 #define PWRMETER330A_OVERVREG_3 3
145 #define PWRMETER330A_UNDERVREG_1 1
151 #define PWRMETER330A_I2C_SLV_ADDR_MASK 0x000001FCul
152 #define PWRMETER330A_I2C_DIS_SLV_ADDR 0x00000200ul
153 #define PWRMETER330A_DIO_0_SEL_MASK 0x00000C00ul
154 #define PWRMETER330A_DIO_1_SEL_MASK 0x00003000ul
155 #define PWRMETER330A_N_MASK 0x00FFC000ul
156 #define PWRMETER330A_BYPASS_N_EN_MASK 0x01000000ul
157 #define PWRMETER330A_DIO_0_SEL_ZC 0
158 #define PWRMETER330A_DIO_0_SEL_OV 1
159 #define PWRMETER330A_DIO_0_SEL_UV 2
160 #define PWRMETER330A_DIO_0_SEL_OV_UV 3
161 #define PWRMETER330A_DIO_1_SEL_OCF 0
162 #define PWRMETER330A_DIO_1_SEL_UV 1
163 #define PWRMETER330A_DIO_1_SEL_OV 2
164 #define PWRMETER330A_DIO_1_SEL_OV_UV_OCF 3
165 #define PWRMETER330A_BYPASS_N_DISABLE 0
166 #define PWRMETER330A_BYPASS_N_ENABLE 1
167 #define PWRMETER330A_MAX_NUM_SAMPLES 1023u
173 #define PWRMETER330A_RSENSE_OHM 2000.0f
174 #define PWRMETER330A_AC_RDIV_OHM 2000000.0f
175 #define PWRMETER330A_DC_RDIV_OHM 4000000.0f
176 #define PWRMETER330A_ADC_FSCALE 55000u
177 #define PWRMETER330A_DELTA_VIN_MAX_mV 250
178 #define PWRMETER330A_mV_TO_V 1000u
179 #define PWRMETER330A_MAX_CURRENT 30
180 #define PWRMETER330A_DEF_AVG_SAMPLES 500u
187 #define PWRMETER330A_DEVICE_ADDRESS_0 0x60
188 #define PWRMETER330A_DEVICE_ADDRESS_1 0x61
189 #define PWRMETER330A_DEVICE_ADDRESS_2 0x64
190 #define PWRMETER330A_DEVICE_ADDRESS_3 0x65
208 #define PWRMETER330A_MAP_MIKROBUS( cfg, mikrobus ) \
209 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
210 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
211 cfg.dio1 = MIKROBUS( mikrobus, MIKROBUS_AN ); \
212 cfg.en = MIKROBUS( mikrobus, MIKROBUS_RST ); \
213 cfg.dio0 = MIKROBUS( mikrobus, MIKROBUS_INT )
530 #endif // PWRMETER330A_H
err_t pwrmeter330a_deny_write_access(pwrmeter330a_t *ctx)
PWR Meter 3 30A deny write access function.
@ PWRMETER330A_OK
Definition: pwrmeter330a.h:265
err_t pwrmeter330a_allow_write_access(pwrmeter330a_t *ctx)
PWR Meter 3 30A allow write access function.
PWR Meter 3 30A Click configuration object.
Definition: pwrmeter330a.h:246
uint8_t pwrmeter330a_get_dio1_pin(pwrmeter330a_t *ctx)
PWR Meter 3 30A get dio1 pin function.
pin_name_t dio0
Definition: pwrmeter330a.h:251
digital_out_t en
Definition: pwrmeter330a.h:225
uint8_t slave_address
Definition: pwrmeter330a.h:235
err_t pwrmeter330a_set_bypass_n_state(pwrmeter330a_t *ctx, uint8_t state)
PWR Meter 3 30A set bypass n state function.
pin_name_t scl
Definition: pwrmeter330a.h:247
pwrmeter330a_return_value_t
PWR Meter 3 30A Click return value data.
Definition: pwrmeter330a.h:264
uint8_t pwrmeter330a_get_dio0_pin(pwrmeter330a_t *ctx)
PWR Meter 3 30A get dio0 pin function.
digital_in_t dio1
Definition: pwrmeter330a.h:228
err_t pwrmeter330a_set_dio1_sel(pwrmeter330a_t *ctx, uint8_t dio_sel)
PWR Meter 3 30A set dio1 sel function.
err_t pwrmeter330a_set_uvrms_thold(pwrmeter330a_t *ctx, uint8_t uvrms)
PWR Meter 3 30A set uvrms threshold function.
@ PWRMETER330A_ERROR
Definition: pwrmeter330a.h:266
err_t pwrmeter330a_set_num_samples(pwrmeter330a_t *ctx, uint16_t num_samples)
PWR Meter 3 30A set num samples function.
uint8_t i2c_address
Definition: pwrmeter330a.h:255
i2c_master_t i2c
Definition: pwrmeter330a.h:232
err_t pwrmeter330a_set_dio0_sel(pwrmeter330a_t *ctx, uint8_t dio_sel)
PWR Meter 3 30A set dio0 sel function.
uint8_t bypass_n_en
Definition: pwrmeter330a.h:237
err_t pwrmeter330a_set_ovrms_thold(pwrmeter330a_t *ctx, uint8_t ovrms)
PWR Meter 3 30A set ovrms threshold function.
void pwrmeter330a_cfg_setup(pwrmeter330a_cfg_t *cfg)
PWR Meter 3 30A configuration object setup function.
err_t pwrmeter330a_default_cfg(pwrmeter330a_t *ctx)
PWR Meter 3 30A default configuration function.
pin_name_t sda
Definition: pwrmeter330a.h:248
uint32_t i2c_speed
Definition: pwrmeter330a.h:254
err_t pwrmeter330a_read_rms(pwrmeter330a_t *ctx, float *v_rms, float *i_rms)
PWR Meter 3 30A read rms function.
digital_in_t dio0
Definition: pwrmeter330a.h:229
PWR Meter 3 30A Click context object.
Definition: pwrmeter330a.h:223
err_t pwrmeter330a_write_register(pwrmeter330a_t *ctx, uint8_t reg, uint32_t data_in)
PWR Meter 3 30A write register function.
pin_name_t en
Definition: pwrmeter330a.h:252
void pwrmeter330a_enable_device(pwrmeter330a_t *ctx)
PWR Meter 3 30A enable device function.
err_t pwrmeter330a_read_register(pwrmeter330a_t *ctx, uint8_t reg, uint32_t *data_out)
PWR Meter 3 30A read register function.
pin_name_t dio1
Definition: pwrmeter330a.h:250
void pwrmeter330a_disable_device(pwrmeter330a_t *ctx)
PWR Meter 3 30A disable device function.
err_t pwrmeter330a_init(pwrmeter330a_t *ctx, pwrmeter330a_cfg_t *cfg)
PWR Meter 3 30A initialization function.
err_t pwrmeter330a_read_average_rms(pwrmeter330a_t *ctx, float *v_rms, float *i_rms, uint16_t num_avg)
PWR Meter 3 30A read average rms function.