diff --git a/source/Core/Src/power.cpp b/source/Core/Src/power.cpp index 8cfac597..7260b98a 100644 --- a/source/Core/Src/power.cpp +++ b/source/Core/Src/power.cpp @@ -48,8 +48,12 @@ uint32_t availableW10(uint8_t sample) { // P = V^2 / R, v*v = v^2 * 100 // R = R*10 // P therefore is in V^2*100/R*10 = W*10. - uint32_t v = getInputVoltageX10(getSettingValue(SettingsOptions::VoltageDiv), sample); // 100 = 10v - uint32_t availableWattsX10 = (v * v) / getTipResitanceX10(); + uint32_t v = getInputVoltageX10(getSettingValue(SettingsOptions::VoltageDiv), sample); // 100 = 10v + uint32_t tipResistance = getTipResitanceX10(); + if (tipResistance == 0) { + return 100; // say 100 watt to force scale down + } + uint32_t availableWattsX10 = (v * v) / tipResistance; // However, 100% duty cycle is not possible as there is a dead time while the ADC takes a reading // Therefore need to scale available milliwats by this