@@ -500,6 +500,7 @@ void raise_z_above(float target, bool plan=true);
extern "C" void softReset();
void stack_error();
+void pullup_error(bool fromTempISR);
extern uint32_t IP_address;
@@ -1754,6 +1754,10 @@ void stack_error() {
crash_and_burn(dump_crash_reason::stack_error);
}
+void pullup_error(bool fromTempISR) {
+ crash_and_burn(fromTempISR ? dump_crash_reason::bad_pullup_temp_isr : dump_crash_reason::bad_pullup_step_isr);
+}
+
void trace();
@@ -299,6 +299,10 @@ ISR(TIMER1_COMPA_vect) {
if (sp < SP_min) SP_min = sp;
#endif //DEBUG_STACK_MONITOR
+ // check for faulty pull-ups enabled on thermistor inputs
+ if (PORTF & 0x5F)
+ pullup_error(false);
#ifdef LIN_ADVANCE
advance_isr_scheduler();
#else
@@ -1683,6 +1683,11 @@ void adc_ready(void) //callback from adc when sampling finished
FORCE_INLINE static void temperature_isr()
{
+ pullup_error(true);
if (!temp_meas_ready) adc_cycle();
lcd_buttons_update();
@@ -8,6 +8,8 @@ enum class dump_crash_reason : uint8_t
stack_error,
watchdog,
bad_isr,
+ bad_pullup_temp_isr,
+ bad_pullup_step_isr,
};
#ifdef XFLASH_DUMP