[P132] Only read measurement when conversion is ready

This commit is contained in:
Ton Huisman
2026-01-22 21:50:41 +01:00
parent f5e3ba29a0
commit 0958d88afe
3 changed files with 31 additions and 21 deletions
+23 -21
View File
@@ -419,26 +419,29 @@ boolean Plugin_132(uint8_t function, struct EventStruct *event, String& string)
channel = 2;
}
switch (reg) {
case 0: // Current
case 2: // Current
case 4: // Current
UserVar.setFloat(event->TaskIndex, r,
P132_data->getBusCurrent_mA(channel));
break;
case 1: // Voltage
case 3: // Voltage
case 5: // Voltage
UserVar.setFloat(event->TaskIndex, r,
P132_data->getBusVoltage_V(channel)
+ (P132_data->getShuntVoltage_mV(channel) / 1000.0f));
break;
case 6: // Power
case 7: // Power
case 8: // Power
UserVar.setFloat(event->TaskIndex, r,
P132_data->getBusPower_mW(channel));
break;
if (P132_data->conversionFinished(channel)) {
switch (reg) {
case 0: // Current
case 2: // Current
case 4: // Current
UserVar.setFloat(event->TaskIndex, r,
P132_data->getBusCurrent_mA(channel));
break;
case 1: // Voltage
case 3: // Voltage
case 5: // Voltage
UserVar.setFloat(event->TaskIndex, r,
P132_data->getBusVoltage_V(channel)
+ (P132_data->getShuntVoltage_mV(channel) / 1000.0f));
break;
case 6: // Power
case 7: // Power
case 8: // Power
UserVar.setFloat(event->TaskIndex, r,
P132_data->getBusPower_mW(channel));
break;
}
success = true; // Only if we have read data
}
}
@@ -454,7 +457,6 @@ boolean Plugin_132(uint8_t function, struct EventStruct *event, String& string)
}
# endif // ifndef BUILD_NO_DEBUG
success = true;
break;
}
}
@@ -284,6 +284,13 @@ float P132_data_struct::getBusPower_mW(uint8_t reg) {
return INA->getBusMicroWatts(_device + reg) * 0.001f;
}
bool P132_data_struct::conversionFinished(uint8_t reg) {
if (!isInitialized()) {
return false;
}
return INA->conversionFinished(_device + reg);
}
# endif // if P132_EXTENDED
// **************************************************************************/
+1
View File
@@ -100,6 +100,7 @@ public:
# if P132_EXTENDED
float getBusCurrent_mA(uint8_t reg);
float getBusPower_mW(uint8_t reg);
bool conversionFinished(uint8_t reg);
void setCalibration(struct EventStruct *event);