diff --git a/master/fsm_master.c b/master/fsm_master.c index f672a1dc..5c974bb2 100644 --- a/master/fsm_master.c +++ b/master/fsm_master.c @@ -219,6 +219,8 @@ void ec_fsm_master_state_broadcast( ec_master_clear_slaves(master); fsm->slave_states = 0x00; + fsm->slaves_responding = 0; /* reset to trigger rescan on next link + up. */ } fsm->link_state = master->main_device.link_state; diff --git a/master/master.c b/master/master.c index 72eac5d6..51f22e8b 100644 --- a/master/master.c +++ b/master/master.c @@ -539,6 +539,10 @@ int ec_master_enter_idle_phase( master->fsm_queue_locking_data = NULL; master->phase = EC_IDLE; + + // reset number of responding slaves to trigger scanning + master->fsm.slaves_responding = 0; + ret = ec_master_thread_start(master, ec_master_idle_thread, "EtherCAT-IDLE"); if (ret)