#define VOLTAGE_MIN 11
#define VOLTAGE_MAX 39
#define CURRENT_MAX 25
-#define CURRENT_OVERTEMP 16 // Should read as ~21A but over 11.86A in an error
+#define CURRENT_OVERTEMP 19 // Should read as ~21A but over 11.86A in an error
#define LOAD_OVERTEMP_MAX 10
-#define MOTOR_SHUTDOWN_THRESH 10
+#define MOTOR_SHUTDOWN_THRESH 15
#define VOLTAGE_SETTLE_COUNT 5
#define VOLTAGE_SETTLE_PERIOD 20 // ms
#define VOLTAGE_SETTLE_TOLERANCE 0.01
#define CURRENT_REF_R2 137
#define CURRENT_REF_MUL (100.0 * 2700 / CURRENT_REF_R2) // 2700 from datasheet
-#define AVG_SCALE 2
+#define AVG_SCALE 3
#define BUCKETS (1 << AVG_SCALE)
// Addresses 0x60 to 0x67
case VOUT_ADC: regs[VOUT_REG] = convert_voltage(data); break;
case CS1_ADC: {
- uint16_t raw = convert_current(data);
- bool overtemp = CURRENT_OVERTEMP * 10 < raw;
+ update_current(MOTOR_REG, data);
+ bool overtemp = CURRENT_OVERTEMP * 100 < regs[MOTOR_REG];
if (overtemp) {
if (motor_overload < MOTOR_SHUTDOWN_THRESH) motor_overload++;
-
- } else {
- if (motor_overload != MOTOR_SHUTDOWN_THRESH && motor_overload)
- motor_overload--;
-
- update_current(MOTOR_REG, data);
- }
+ } else if (motor_overload != MOTOR_SHUTDOWN_THRESH && motor_overload)
+ motor_overload--;
break;
}