diff --git a/master/fsm_master.c b/master/fsm_master.c index ee13edff..da7b0e4d 100644 --- a/master/fsm_master.c +++ b/master/fsm_master.c @@ -218,6 +218,8 @@ void ec_fsm_master_state_broadcast( #endif 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->devices[EC_DEVICE_MAIN].link_state; diff --git a/master/master.c b/master/master.c index 5e78805b..b0df3e27 100644 --- a/master/master.c +++ b/master/master.c @@ -562,6 +562,10 @@ int ec_master_enter_idle_phase( master->cb_data = master; 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)