mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-20 17:26:30 +00:00
Fix ESP32 core 2.x I2C device detection speed
This commit is contained in:
parent
58935bf708
commit
dba1f32c82
@ -45,7 +45,7 @@ uint16_t pca9685_pin_pwm_value[16];
|
|||||||
|
|
||||||
void PCA9685_Detect(void)
|
void PCA9685_Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(USE_PCA9685_ADDR)) { return; }
|
if (!I2cSetDevice(USE_PCA9685_ADDR)) { return; }
|
||||||
|
|
||||||
uint8_t buffer;
|
uint8_t buffer;
|
||||||
if (I2cValidRead8(&buffer, USE_PCA9685_ADDR, PCA9685_REG_MODE1)) {
|
if (I2cValidRead8(&buffer, USE_PCA9685_ADDR, PCA9685_REG_MODE1)) {
|
||||||
|
@ -459,7 +459,7 @@ void BmpDetect(void)
|
|||||||
memset(bmp_sensors, 0, bmp_sensor_size); // Init defaults to 0
|
memset(bmp_sensors, 0, bmp_sensor_size); // Init defaults to 0
|
||||||
|
|
||||||
for (uint32_t i = 0; i < BMP_MAX_SENSORS; i++) {
|
for (uint32_t i = 0; i < BMP_MAX_SENSORS; i++) {
|
||||||
if (I2cActive(bmp_addresses[i])) { continue; }
|
if (!I2cSetDevice(bmp_addresses[i])) { continue; }
|
||||||
uint8_t bmp_type = I2cRead8(bmp_addresses[i], BMP_REGISTER_CHIPID);
|
uint8_t bmp_type = I2cRead8(bmp_addresses[i], BMP_REGISTER_CHIPID);
|
||||||
if (bmp_type) {
|
if (bmp_type) {
|
||||||
bmp_sensors[bmp_count].bmp_address = bmp_addresses[i];
|
bmp_sensors[bmp_count].bmp_address = bmp_addresses[i];
|
||||||
|
@ -115,7 +115,7 @@ bool Bh1750Read(uint32_t sensor_index) {
|
|||||||
|
|
||||||
void Bh1750Detect(void) {
|
void Bh1750Detect(void) {
|
||||||
for (uint32_t i = 0; i < sizeof(Bh1750.addresses); i++) {
|
for (uint32_t i = 0; i < sizeof(Bh1750.addresses); i++) {
|
||||||
if (I2cActive(Bh1750.addresses[i])) { continue; }
|
if (!I2cSetDevice(Bh1750.addresses[i])) { continue; }
|
||||||
|
|
||||||
Bh1750_sensors[Bh1750.count].address = Bh1750.addresses[i];
|
Bh1750_sensors[Bh1750.count].address = Bh1750.addresses[i];
|
||||||
if (Bh1750SetMTreg(Bh1750.count)) {
|
if (Bh1750SetMTreg(Bh1750.count)) {
|
||||||
|
@ -128,7 +128,7 @@ char str_uvrisk_text[10];
|
|||||||
|
|
||||||
void Veml6070Detect(void)
|
void Veml6070Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(VEML6070_ADDR_L)) { return; }
|
if (!I2cSetDevice(VEML6070_ADDR_L)) { return; }
|
||||||
|
|
||||||
// init the UV sensor
|
// init the UV sensor
|
||||||
Wire.beginTransmission(VEML6070_ADDR_L);
|
Wire.beginTransmission(VEML6070_ADDR_L);
|
||||||
|
@ -167,7 +167,7 @@ void Ads1115Detect(void)
|
|||||||
for (uint32_t i = 0; i < sizeof(Ads1115.addresses); i++) {
|
for (uint32_t i = 0; i < sizeof(Ads1115.addresses); i++) {
|
||||||
if (!Ads1115.found[i]) {
|
if (!Ads1115.found[i]) {
|
||||||
Ads1115.address = Ads1115.addresses[i];
|
Ads1115.address = Ads1115.addresses[i];
|
||||||
if (I2cActive(Ads1115.address)) { continue; }
|
if (!I2cSetDevice(Ads1115.address)) { continue; }
|
||||||
uint16_t buffer;
|
uint16_t buffer;
|
||||||
if (I2cValidRead16(&buffer, Ads1115.address, ADS1115_REG_POINTER_CONVERT) &&
|
if (I2cValidRead16(&buffer, Ads1115.address, ADS1115_REG_POINTER_CONVERT) &&
|
||||||
I2cValidRead16(&buffer, Ads1115.address, ADS1115_REG_POINTER_CONFIG)) {
|
I2cValidRead16(&buffer, Ads1115.address, ADS1115_REG_POINTER_CONFIG)) {
|
||||||
|
@ -246,7 +246,7 @@ void Ina219Detect(void)
|
|||||||
{
|
{
|
||||||
for (uint32_t i = 0; i < sizeof(ina219_type); i++) {
|
for (uint32_t i = 0; i < sizeof(ina219_type); i++) {
|
||||||
uint16_t addr = ina219_addresses[i];
|
uint16_t addr = ina219_addresses[i];
|
||||||
if (I2cActive(addr)) { continue; }
|
if (!I2cSetDevice(addr)) { continue; }
|
||||||
if (Ina219SetCalibration(Settings->ina219_mode, addr)) {
|
if (Ina219SetCalibration(Settings->ina219_mode, addr)) {
|
||||||
I2cSetActiveFound(addr, ina219_types);
|
I2cSetActiveFound(addr, ina219_types);
|
||||||
ina219_type[i] = 1;
|
ina219_type[i] = 1;
|
||||||
|
@ -80,7 +80,7 @@ bool Sht3xRead(float &t, float &h, uint8_t sht3x_address)
|
|||||||
void Sht3xDetect(void)
|
void Sht3xDetect(void)
|
||||||
{
|
{
|
||||||
for (uint32_t i = 0; i < SHT3X_MAX_SENSORS; i++) {
|
for (uint32_t i = 0; i < SHT3X_MAX_SENSORS; i++) {
|
||||||
if (I2cActive(sht3x_addresses[i])) { continue; }
|
if (!I2cSetDevice(sht3x_addresses[i])) { continue; }
|
||||||
float t;
|
float t;
|
||||||
float h;
|
float h;
|
||||||
if (Sht3xRead(t, h, sht3x_addresses[i])) {
|
if (Sht3xRead(t, h, sht3x_addresses[i])) {
|
||||||
|
@ -37,13 +37,9 @@
|
|||||||
|
|
||||||
bool mgs_detected = false;
|
bool mgs_detected = false;
|
||||||
|
|
||||||
void MGSInit(void) {
|
|
||||||
gas.begin(MGS_SENSOR_ADDR);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MGSPrepare(void)
|
void MGSPrepare(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(MGS_SENSOR_ADDR)) { return; }
|
if (!I2cSetDevice(MGS_SENSOR_ADDR)) { return; }
|
||||||
|
|
||||||
gas.begin(MGS_SENSOR_ADDR);
|
gas.begin(MGS_SENSOR_ADDR);
|
||||||
if (!gas.isError()) {
|
if (!gas.isError()) {
|
||||||
|
@ -43,7 +43,7 @@ float sgp30_abshum;
|
|||||||
|
|
||||||
void sgp30_Init(void)
|
void sgp30_Init(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(SGP30_ADDRESS)) { return; }
|
if (!I2cSetDevice(SGP30_ADDRESS)) { return; }
|
||||||
|
|
||||||
if (sgp.begin()) {
|
if (sgp.begin()) {
|
||||||
sgp30_type = true;
|
sgp30_type = true;
|
||||||
|
@ -326,7 +326,7 @@ bool Si1145Read(void)
|
|||||||
|
|
||||||
void Si1145Detect(void)
|
void Si1145Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(SI114X_ADDR)) { return; }
|
if (!I2cSetDevice(SI114X_ADDR)) { return; }
|
||||||
|
|
||||||
if (Si1145Begin()) {
|
if (Si1145Begin()) {
|
||||||
si1145_type = true;
|
si1145_type = true;
|
||||||
|
@ -53,8 +53,6 @@ void LM75ADDetect(void)
|
|||||||
{
|
{
|
||||||
for (uint32_t i = 0; i < sizeof(lm75ad_addresses); i++) {
|
for (uint32_t i = 0; i < sizeof(lm75ad_addresses); i++) {
|
||||||
lm75ad_address = lm75ad_addresses[i];
|
lm75ad_address = lm75ad_addresses[i];
|
||||||
if (I2cActive(lm75ad_address)) {
|
|
||||||
continue; }
|
|
||||||
if (!I2cSetDevice(lm75ad_address)) {
|
if (!I2cSetDevice(lm75ad_address)) {
|
||||||
continue; // do not make the next step without a confirmed device on the bus
|
continue; // do not make the next step without a confirmed device on the bus
|
||||||
}
|
}
|
||||||
|
@ -1806,7 +1806,7 @@ void APDS9960_loop(void) {
|
|||||||
#endif // USE_APDS9960_GESTURE
|
#endif // USE_APDS9960_GESTURE
|
||||||
|
|
||||||
void APDS9960_detect(void) {
|
void APDS9960_detect(void) {
|
||||||
if (APDS9960_type || I2cActive(APDS9960_I2C_ADDR)) { return; }
|
if (APDS9960_type || !I2cSetDevice(APDS9960_I2C_ADDR)) { return; }
|
||||||
|
|
||||||
APDS9960_type = I2cRead8(APDS9960_I2C_ADDR, APDS9960_ID);
|
APDS9960_type = I2cRead8(APDS9960_I2C_ADDR, APDS9960_ID);
|
||||||
|
|
||||||
|
@ -251,7 +251,7 @@ void MCP230xx_ApplySettings(void)
|
|||||||
|
|
||||||
void MCP230xx_Detect(void)
|
void MCP230xx_Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(USE_MCP230xx_ADDR)) { return; }
|
if (!I2cSetDevice(USE_MCP230xx_ADDR)) { return; }
|
||||||
|
|
||||||
uint8_t buffer;
|
uint8_t buffer;
|
||||||
|
|
||||||
|
@ -219,7 +219,7 @@ void Mpr121Init(struct mpr121 *pS, bool initial)
|
|||||||
// Loop through I2C addresses
|
// Loop through I2C addresses
|
||||||
for (uint32_t i = 0; i < sizeof(pS->i2c_addr[i]); i++) {
|
for (uint32_t i = 0; i < sizeof(pS->i2c_addr[i]); i++) {
|
||||||
|
|
||||||
if (initial && I2cActive(pS->i2c_addr[i])) { continue; }
|
if (initial && !I2cSetDevice(pS->i2c_addr[i])) { continue; }
|
||||||
|
|
||||||
// Soft reset sensor and check if connected at I2C address
|
// Soft reset sensor and check if connected at I2C address
|
||||||
pS->connected[i] = (I2cWrite8(pS->i2c_addr[i], MPR121_SRST_REG, MPR121_SRST_VAL)
|
pS->connected[i] = (I2cWrite8(pS->i2c_addr[i], MPR121_SRST_REG, MPR121_SRST_VAL)
|
||||||
|
@ -46,7 +46,7 @@ uint8_t ecnt = 0;
|
|||||||
|
|
||||||
void CCS811Detect(void)
|
void CCS811Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(CCS811_ADDRESS)) { return; }
|
if (!I2cSetDevice(CCS811_ADDRESS)) { return; }
|
||||||
|
|
||||||
if (!ccs.begin(CCS811_ADDRESS)) {
|
if (!ccs.begin(CCS811_ADDRESS)) {
|
||||||
CCS811_type = 1;
|
CCS811_type = 1;
|
||||||
|
@ -89,7 +89,7 @@ void CCS811Detect(void)
|
|||||||
int active_index = 1;
|
int active_index = 1;
|
||||||
for (i = 0, pccsd = ccsd; i < MAXDEVICECOUNT; i++, pccsd++) {
|
for (i = 0, pccsd = ccsd; i < MAXDEVICECOUNT; i++, pccsd++) {
|
||||||
pccsd->address = CCS811_addresses[ i];
|
pccsd->address = CCS811_addresses[ i];
|
||||||
if (I2cActive( pccsd->address)) { continue; }
|
if (!I2cSetDevice( pccsd->address)) { continue; }
|
||||||
if (!pccsd->ccsinstance.begin(pccsd->address)) {
|
if (!pccsd->ccsinstance.begin(pccsd->address)) {
|
||||||
pccsd->device_found = 1;
|
pccsd->device_found = 1;
|
||||||
CCS811_devices_found += 1;
|
CCS811_devices_found += 1;
|
||||||
|
@ -72,7 +72,7 @@ bool DS3231chipDetected = false;
|
|||||||
----------------------------------------------------------------------*/
|
----------------------------------------------------------------------*/
|
||||||
void DS3231Detect(void)
|
void DS3231Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(USE_RTC_ADDR)) { return; }
|
if (!I2cSetDevice(USE_RTC_ADDR)) { return; }
|
||||||
|
|
||||||
if (I2cValidRead(USE_RTC_ADDR, RTC_STATUS, 1)) {
|
if (I2cValidRead(USE_RTC_ADDR, RTC_STATUS, 1)) {
|
||||||
I2cSetActiveFound(USE_RTC_ADDR, "DS3231");
|
I2cSetActiveFound(USE_RTC_ADDR, "DS3231");
|
||||||
|
@ -483,7 +483,7 @@ void MGC3130_loop()
|
|||||||
|
|
||||||
void MGC3130_detect(void)
|
void MGC3130_detect(void)
|
||||||
{
|
{
|
||||||
if (MGC3130_type || I2cActive(MGC3130_I2C_ADDR)) { return; }
|
if (MGC3130_type || !I2cSetDevice(MGC3130_I2C_ADDR)) { return; }
|
||||||
|
|
||||||
MGC3130_xfer = Pin(GPIO_MGC3130_XFER);
|
MGC3130_xfer = Pin(GPIO_MGC3130_XFER);
|
||||||
MGC3130_reset = Pin(GPIO_MGC3130_RESET);
|
MGC3130_reset = Pin(GPIO_MGC3130_RESET);
|
||||||
|
@ -71,7 +71,7 @@ void Max4409Detect(void)
|
|||||||
for (uint32_t i = 0; 0 != max44009_addresses[i]; i++) {
|
for (uint32_t i = 0; 0 != max44009_addresses[i]; i++) {
|
||||||
|
|
||||||
max44009_address = max44009_addresses[i];
|
max44009_address = max44009_addresses[i];
|
||||||
if (I2cActive(max44009_address)) { continue; }
|
if (!I2cSetDevice(max44009_address)) { continue; }
|
||||||
|
|
||||||
if ((I2cValidRead8(&buffer1, max44009_address, REG_LOWER_THRESHOLD)) &&
|
if ((I2cValidRead8(&buffer1, max44009_address, REG_LOWER_THRESHOLD)) &&
|
||||||
(I2cValidRead8(&buffer2, max44009_address, REG_THRESHOLD_TIMER))) {
|
(I2cValidRead8(&buffer2, max44009_address, REG_THRESHOLD_TIMER))) {
|
||||||
|
@ -79,7 +79,7 @@ float scd30_Temp = 0.0;
|
|||||||
|
|
||||||
void Scd30Detect(void)
|
void Scd30Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(SCD30_ADDRESS)) { return; }
|
if (!I2cSetDevice(SCD30_ADDRESS)) { return; }
|
||||||
|
|
||||||
scd30.begin();
|
scd30.begin();
|
||||||
|
|
||||||
|
@ -309,7 +309,7 @@ void PAJ7620ReadGesture(void)
|
|||||||
|
|
||||||
void PAJ7620Detect(void)
|
void PAJ7620Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(PAJ7620_ADDR)) { return; }
|
if (!I2cSetDevice(PAJ7620_ADDR)) { return; }
|
||||||
|
|
||||||
PAJ7620SelectBank(0);
|
PAJ7620SelectBank(0);
|
||||||
PAJ7620SelectBank(0); // do it twice
|
PAJ7620SelectBank(0); // do it twice
|
||||||
|
@ -223,7 +223,7 @@ void Ina226Init()
|
|||||||
for (i = 0; i < INA226_MAX_ADDRESSES; i++){
|
for (i = 0; i < INA226_MAX_ADDRESSES; i++){
|
||||||
uint8_t addr = pgm_read_byte(probeAddresses + i);
|
uint8_t addr = pgm_read_byte(probeAddresses + i);
|
||||||
|
|
||||||
if (I2cActive(addr)) { continue; }
|
if (!I2cSetDevice(addr)) { continue; }
|
||||||
|
|
||||||
// Skip device probing if the full scale current is zero
|
// Skip device probing if the full scale current is zero
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ bool Hih6Read(void)
|
|||||||
|
|
||||||
void Hih6Detect(void)
|
void Hih6Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(HIH6_ADDR)) { return; }
|
if (!I2cSetDevice(HIH6_ADDR)) { return; }
|
||||||
|
|
||||||
if (TasmotaGlobal.uptime < 2) { delay(20); } // Skip entering power on comand mode
|
if (TasmotaGlobal.uptime < 2) { delay(20); } // Skip entering power on comand mode
|
||||||
Hih6.type = Hih6Read();
|
Hih6.type = Hih6Read();
|
||||||
|
@ -69,7 +69,7 @@ bool Dht12Read(void)
|
|||||||
|
|
||||||
void Dht12Detect(void)
|
void Dht12Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(DHT12_ADDR)) { return; }
|
if (!I2cSetDevice(DHT12_ADDR)) { return; }
|
||||||
|
|
||||||
if (Dht12Read()) {
|
if (Dht12Read()) {
|
||||||
I2cSetActiveFound(DHT12_ADDR, Dht12.name);
|
I2cSetActiveFound(DHT12_ADDR, Dht12.name);
|
||||||
|
@ -78,7 +78,6 @@ void DS1624_HotPlugUp(uint32_t idx)
|
|||||||
{
|
{
|
||||||
uint32_t addr = DS1624_Idx2Addr(idx);
|
uint32_t addr = DS1624_Idx2Addr(idx);
|
||||||
|
|
||||||
if (I2cActive(addr)) { return; }
|
|
||||||
if (!I2cSetDevice(addr)) { return; }
|
if (!I2cSetDevice(addr)) { return; }
|
||||||
|
|
||||||
uint8_t config;
|
uint8_t config;
|
||||||
|
@ -236,11 +236,7 @@ bool HdcRead(void) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void HdcDetect(void) {
|
void HdcDetect(void) {
|
||||||
if (I2cActive(HDC1080_ADDR)) {
|
if (!I2cSetDevice(HDC1080_ADDR)) { return; }
|
||||||
// AddLog(LOG_LEVEL_DEBUG, PSTR("HdcDetect: Address = 0x%02X already in use."), HDC1080_ADDR);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
hdc_manufacturer_id = HdcReadManufacturerId();
|
hdc_manufacturer_id = HdcReadManufacturerId();
|
||||||
hdc_device_id = HdcReadDeviceId();
|
hdc_device_id = HdcReadDeviceId();
|
||||||
|
@ -200,7 +200,7 @@ bool VEML6075init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VEML6075Detect(void) {
|
void VEML6075Detect(void) {
|
||||||
if (I2cActive(veml6075_sensor.address)) return;
|
if (!I2cSetDevice(veml6075_sensor.address)) return;
|
||||||
|
|
||||||
if (VEML6075init()) {
|
if (VEML6075init()) {
|
||||||
I2cSetActiveFound(veml6075_sensor.address, veml6075_sensor.types);
|
I2cSetActiveFound(veml6075_sensor.address, veml6075_sensor.types);
|
||||||
|
@ -137,7 +137,7 @@ uint16_t T67XX::getFirmwareVersion(void)
|
|||||||
|
|
||||||
void T67XX::detect(void)
|
void T67XX::detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(T67XX_I2C_ADDR))
|
if (!I2cSetDevice(T67XX_I2C_ADDR))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -115,10 +115,7 @@ float scd40_Temp = 0.0;
|
|||||||
|
|
||||||
void Scd40Detect(void)
|
void Scd40Detect(void)
|
||||||
{
|
{
|
||||||
if (I2cActive(SCD40_ADDRESS)) {
|
if (!I2cSetDevice(SCD40_ADDRESS)) { return; }
|
||||||
AddLog(LOG_LEVEL_DEBUG, PSTR("SCD40 I2c already active in Scd40Detect()") );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
scd40.begin();
|
scd40.begin();
|
||||||
|
|
||||||
|
@ -181,7 +181,9 @@ int HM330XSendI2CCommand(uint8_t cmd) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int HM330XInit() {
|
void HM330XInit(void) {
|
||||||
|
if (!I2cSetDevice(HM330X_DEFAULT_ADDRESS)) { return; }
|
||||||
|
|
||||||
int8_t set_pin = Pin(GPIO_HM330X_SET);
|
int8_t set_pin = Pin(GPIO_HM330X_SET);
|
||||||
if (set_pin >= 0) {
|
if (set_pin >= 0) {
|
||||||
pinMode(set_pin, OUTPUT);
|
pinMode(set_pin, OUTPUT);
|
||||||
@ -189,20 +191,15 @@ int HM330XInit() {
|
|||||||
delay(5);
|
delay(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (I2cActive(HM330X_DEFAULT_ADDRESS)) {
|
|
||||||
AddLog(LOG_LEVEL_DEBUG, PSTR("HM3: Address 0x%02X already in use"), HM330X_DEFAULT_ADDRESS);
|
|
||||||
return HM330X_ERROR_PARAM;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (HM330X_NO_ERROR != HM330XSendI2CCommand(HM330X_SELECT_COMM_CMD)) {
|
if (HM330X_NO_ERROR != HM330XSendI2CCommand(HM330X_SELECT_COMM_CMD)) {
|
||||||
AddLog(LOG_LEVEL_DEBUG, PSTR("HM3: no response from address 0x%02X"), HM330X_DEFAULT_ADDRESS);
|
AddLog(LOG_LEVEL_DEBUG, PSTR("HM3: no response from address 0x%02X"), HM330X_DEFAULT_ADDRESS);
|
||||||
return HM330X_ERROR_COMM;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HM330Xdata = (HM330XDATA*)calloc(1,sizeof(HM330XDATA));
|
HM330Xdata = (HM330XDATA*)calloc(1,sizeof(HM330XDATA));
|
||||||
if (!HM330Xdata) {
|
if (!HM330Xdata) {
|
||||||
AddLog(LOG_LEVEL_DEBUG, PSTR("HM3: out of memory"));
|
AddLog(LOG_LEVEL_DEBUG, PSTR("HM3: out of memory"));
|
||||||
return HM330X_ERROR_MEMALLOC;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HM330Xdata->valid = false;
|
HM330Xdata->valid = false;
|
||||||
@ -211,8 +208,6 @@ int HM330XInit() {
|
|||||||
HM330Xdata->warmup_counter = HM330X_WARMUP_DELAY;
|
HM330Xdata->warmup_counter = HM330X_WARMUP_DELAY;
|
||||||
|
|
||||||
I2cSetActiveFound(HM330X_DEFAULT_ADDRESS, "HM330X");
|
I2cSetActiveFound(HM330X_DEFAULT_ADDRESS, "HM330X");
|
||||||
|
|
||||||
return HM330X_NO_ERROR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HM330XEverySecond() {
|
void HM330XEverySecond() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user