diff --git a/include/power.h b/include/power.h index c856abcd..3622f643 100644 --- a/include/power.h +++ b/include/power.h @@ -16,6 +16,7 @@ void AXP192_power(bool on); #endif void AXP192_init(void); +void AXP192_displaypower(void); uint16_t read_voltage(void); void calibrate_voltage(void); uint8_t getBattLevel(void); diff --git a/src/cyclic.cpp b/src/cyclic.cpp index 0b51d88b..1cdd9b14 100644 --- a/src/cyclic.cpp +++ b/src/cyclic.cpp @@ -31,11 +31,12 @@ void doHousekeeping() { ESP_LOGD(TAG, "LMiCtask %d bytes left | Taskstate = %d", uxTaskGetStackHighWaterMark(lmicTask), eTaskGetState(lmicTask)); ESP_LOGD(TAG, "Lorasendtask %d bytes left | Taskstate = %d", - uxTaskGetStackHighWaterMark(lorasendTask), eTaskGetState(lorasendTask)); + uxTaskGetStackHighWaterMark(lorasendTask), + eTaskGetState(lorasendTask)); #endif #if (HAS_GPS) - ESP_LOGD(TAG, "Gpsloop %d bytes left | Taskstate = %d", - uxTaskGetStackHighWaterMark(GpsTask), eTaskGetState(GpsTask)); + ESP_LOGD(TAG, "Gpsloop %d bytes left | Taskstate = %d", + uxTaskGetStackHighWaterMark(GpsTask), eTaskGetState(GpsTask)); #endif #ifdef HAS_SPI ESP_LOGD(TAG, "spiloop %d bytes left | Taskstate = %d", @@ -57,6 +58,12 @@ void doHousekeeping() { #if (defined BAT_MEASURE_ADC || defined HAS_PMU) batt_voltage = read_voltage(); ESP_LOGI(TAG, "Voltage: %dmV", batt_voltage); +#ifdef HAS_PMU + if (I2C_MUTEX_LOCK()) { + AXP192_displaypower(); + I2C_MUTEX_UNLOCK(); + } +#endif // HAS_PMU #endif // display BME680/280 sensor data diff --git a/src/power.cpp b/src/power.cpp index b85f58c7..5dccf6d0 100644 --- a/src/power.cpp +++ b/src/power.cpp @@ -16,9 +16,10 @@ void pover_event_IRQ(void) { // put your power event handler code here if (pmu.isVbusOverVoltageIRQ()) - ESP_LOGI(TAG, "USB voltage too high."); + ESP_LOGI(TAG, "USB voltage %.1fV too high.", pmu.getVbusVoltage()); if (pmu.isVbusPlugInIRQ()) - ESP_LOGI(TAG, "USB plugged."); + ESP_LOGI(TAG, "USB plugged, %.0fmAh @ %.1fV", pmu.getVbusCurrent(), + pmu.getVbusVoltage()); if (pmu.isVbusRemoveIRQ()) ESP_LOGI(TAG, "USB unplugged."); @@ -27,7 +28,7 @@ void pover_event_IRQ(void) { if (pmu.isBattRemoveIRQ()) ESP_LOGI(TAG, "Battery was removed."); if (pmu.isChargingIRQ()) - ESP_LOGI(TAG, "Battery is charging."); + ESP_LOGI(TAG, "Battery charging."); if (pmu.isChargingDoneIRQ()) ESP_LOGI(TAG, "Battery charging done."); if (pmu.isBattTempLowIRQ()) @@ -74,6 +75,17 @@ void AXP192_power(bool on) { } } +void AXP192_displaypower(void) { + if (pmu.isBatteryConnect()) + if (pmu.isChargeing()) + ESP_LOGI(TAG, "Battery charging @ %.0fmAh", pmu.getBattChargeCurrent()); + else + ESP_LOGI(TAG, "Battery discharging @ %0.fmAh", + pmu.getBattDischargeCurrent()); + else + ESP_LOGI(TAG, "No Battery"); +} + void AXP192_init(void) { // block i2c bus access @@ -89,8 +101,7 @@ void AXP192_init(void) { AXP192_power(true); // I2C access of AXP202X library currently is not mutexable - // so we need to disable AXP interrupts - + // so we better should disable AXP interrupts... ? #ifdef PMU_INT pinMode(PMU_INT, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(PMU_INT), PMUIRQ, FALLING); @@ -101,14 +112,7 @@ void AXP192_init(void) { #endif // PMU_INT ESP_LOGI(TAG, "AXP192 PMU initialized."); - - if (pmu.isBatteryConnect()) - if (pmu.isChargeing()) - ESP_LOGI(TAG, "Battery deteced, charging."); - else - ESP_LOGI(TAG, "Battery deteced, not charging."); - else - ESP_LOGI(TAG, "No Battery deteced."); + AXP192_displaypower(); } I2C_MUTEX_UNLOCK(); // release i2c bus access } else