@@ -23,7 +23,7 @@ class LoadContainer {
2323 TaskInfo tFSM{vTaskUpdateFSM, " FSM" , 2048 , nullptr , 20 ,
2424 nullptr , 0 , false , true };
2525 TaskInfo tPoll{vTPollS, " Poll" , 4096 , nullptr , 20 ,
26- nullptr , 0 , false , false };
26+ nullptr , 0 , false , false };
2727 TaskInfo tAdjustLoad{vTaskAdjustLoad, " AdLd" , 2048 , nullptr , 15 ,
2828 nullptr , 0 , false , true };
2929 TaskInfo tRecv{vTaskRecvData, " Recv" , 2048 , nullptr , 10 ,
@@ -64,14 +64,24 @@ class LoadContainer {
6464 } // todo
6565
6666 inline void updateSafetyFlag () {
67- ESP_LOGD (TAG , " ESTOP: %d" , digitalRead (UM_PROS3 ::ESTOP_PIN ));
67+ // ESP_LOGD(TAG, "ESTOP: %d", digitalRead(UM_PROS3::ESTOP_PIN));
68+ static uint_fast8_t loadDisconnectCounter = 0 ;
6869 if (digitalRead (UM_PROS3 ::ESTOP_PIN ) == HIGH ) {
6970 this ->safetyFlag = ESTOP_TYPE_FAST ::BUTTON ;
71+ loadDisconnectCounter = 0 ;
7072 } else if (abs (INA260 ::current_mA) <
7173 PSENSOR ::LOAD_SHED_I_THRESHOLD_mA) {
72- this ->safetyFlag = ESTOP_TYPE_FAST ::LOAD_DISCONNECT_I ;
74+ loadDisconnectCounter++;
75+ constexpr uint_fast32_t LOAD_DISCONNECT_DELAY_ms = 1000 ;
76+ constexpr uint_fast32_t LOAD_DISCONNECT_DELAY_CNT =
77+ LOAD_DISCONNECT_DELAY_ms /
78+ RUN ::TASK_INTERVALS ::TI_POLL_SENSORS_mS;
79+ if (loadDisconnectCounter > LOAD_DISCONNECT_DELAY_CNT ) {
80+ this ->safetyFlag = ESTOP_TYPE_FAST ::LOAD_DISCONNECT_I ;
81+ }
7382 } else {
7483 this ->safetyFlag = ESTOP_TYPE_FAST ::NONE ;
84+ loadDisconnectCounter = 0 ;
7585 }
7686 }
7787 // inline void updatePowerPositive(bool powerPositive) {
0 commit comments