diff --git a/master/fsm_slave_config.c b/master/fsm_slave_config.c index 865daba4..80956432 100755 --- a/master/fsm_slave_config.c +++ b/master/fsm_slave_config.c @@ -1389,6 +1389,7 @@ void ec_fsm_slave_config_state_dc_sync_check( ec_slave_t *slave = fsm->slave; ec_master_t *master = slave->master; ec_slave_config_t *config = slave->config; + bool negative; uint32_t abs_sync_diff; unsigned long diff_ms; ec_sync_signal_t *sync0 = &config->dc_sync[0]; @@ -1419,6 +1420,7 @@ void ec_fsm_slave_config_state_dc_sync_check( } abs_sync_diff = EC_READ_U32(datagram->data) & 0x7fffffff; + negative = (EC_READ_U32(datagram->data) & 0x80000000) != 0; diff_ms = (datagram->jiffies_received - fsm->jiffies_start) * 1000 / HZ; if (abs_sync_diff > EC_DC_MAX_SYNC_DIFF_NS) { @@ -1430,8 +1432,8 @@ void ec_fsm_slave_config_state_dc_sync_check( static unsigned long last_diff_ms = 0; if ((diff_ms < last_diff_ms) || (diff_ms >= (last_diff_ms + 100))) { last_diff_ms = diff_ms; - EC_SLAVE_DBG(slave, 1, "Sync after %4lu ms: %10u ns\n", - diff_ms, EC_READ_U32(datagram->data) & 0x80000000 ? -abs_sync_diff: abs_sync_diff); + EC_SLAVE_DBG(slave, 1, "Sync after %4lu ms: %10d ns\n", + diff_ms, negative ? -abs_sync_diff: abs_sync_diff); } // check synchrony again @@ -1441,8 +1443,8 @@ void ec_fsm_slave_config_state_dc_sync_check( return; } } else { - EC_SLAVE_DBG(slave, 1, "%u ns difference after %lu ms.\n", - abs_sync_diff, diff_ms); + EC_SLAVE_DBG(slave, 1, "%d ns difference after %lu ms.\n", + negative ? -abs_sync_diff: abs_sync_diff, diff_ms); } // set DC start time (roughly in the future, not in-phase)