diff --git a/src/bme680mems.cpp b/src/bme680mems.cpp index 468e85da..08795f31 100644 --- a/src/bme680mems.cpp +++ b/src/bme680mems.cpp @@ -101,34 +101,28 @@ void bme_loop(void *pvParameters) { int8_t i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) { - int8_t rslt = 0; /* Return 0 for Success, non-zero for failure */ - uint16_t i; - + int8_t rslt = 0; Wire.beginTransmission(dev_id); Wire.write(reg_addr); - rslt = Wire.endTransmission(); + rslt = Wire.endTransmission(false); Wire.requestFrom((int)dev_id, (int)len); - for (i = 0; (i < len) && Wire.available(); i++) { + for (uint16_t i = 0; (i < len) && Wire.available(); i++) { reg_data[i] = Wire.read(); } - + // return 0 for success, non-zero for failure return rslt; } int8_t i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) { - int8_t rslt = 0; /* Return 0 for Success, non-zero for failure */ - uint16_t i; - Wire.beginTransmission(dev_id); Wire.write(reg_addr); - for (i = 0; i < len; i++) { + for (uint16_t i = 0; i < len; i++) { Wire.write(reg_data[i]); } - rslt = Wire.endTransmission(); - - return rslt; + // return 0 for success, non-zero for failure + return Wire.endTransmission(true); } /*! diff --git a/src/main.cpp b/src/main.cpp index 5a0604cc..f6e88b75 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -35,9 +35,11 @@ IDLE 0 0 ESP32 arduino scheduler -> runs wifi sniffer looptask 1 1 arduino core -> runs the LMIC LoRa stack irqhandler 1 1 executes tasks triggered by irq gpsloop 1 2 reads data from GPS via serial or i2c -bmeloop 1 2 reads data from BME sensor via i2c +bmeloop 1 0 reads data from BME sensor via i2c IDLE 1 0 ESP32 arduino scheduler +Low priority numbers denote low priority tasks. + ESP32 hardware timers ========================== 0 Trigger display refresh @@ -239,7 +241,7 @@ void setup() { "bmeloop", // name of task 4096, // stack size of task (void *)1, // parameter of the task - 2, // priority of the task + 0, // priority of the task &BmeTask, // task handle 1); // CPU core } @@ -331,7 +333,7 @@ void setup() { ESP_LOGI(TAG, "Starting IRQ Handler..."); xTaskCreatePinnedToCore(irqHandler, // task function "irqhandler", // name of task - 2048, // stack size of task + 4096, // stack size of task (void *)1, // parameter of the task 1, // priority of the task &irqHandlerTask, // task handle