From 4a761b44bb991702de5961933984bb6bee0af271 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sat, 26 Apr 2014 19:40:36 +0400 Subject: [PATCH] STM32 clock sync defaults --- .../stm32/driver/include/uavcan_stm32/clock.hpp | 6 +++--- libuavcan_drivers/stm32/driver/src/uc_stm32_clock.cpp | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libuavcan_drivers/stm32/driver/include/uavcan_stm32/clock.hpp b/libuavcan_drivers/stm32/driver/include/uavcan_stm32/clock.hpp index b1d6a758f9..8be4c50b9c 100644 --- a/libuavcan_drivers/stm32/driver/include/uavcan_stm32/clock.hpp +++ b/libuavcan_drivers/stm32/driver/include/uavcan_stm32/clock.hpp @@ -43,10 +43,10 @@ struct UtcSyncParams { float p = 0.01; ///< Correction PPM per 1 usec error float i_fwd = 0.0001; - float i_rev = i_fwd * 10.0; - float rate_error_corner_freq = 0.05; + float i_rev = i_fwd * 5.0; + float rate_error_corner_freq = 0.01; float max_rate_correction_ppm = 300; - float lock_thres_rate_ppm = 10.0; + float lock_thres_rate_ppm = 2.0; uavcan::UtcDuration lock_thres_offset = uavcan::UtcDuration::fromMSec(4); uavcan::UtcDuration min_jump = uavcan::UtcDuration::fromMSec(10); ///< Min error to jump rather than change rate }; diff --git a/libuavcan_drivers/stm32/driver/src/uc_stm32_clock.cpp b/libuavcan_drivers/stm32/driver/src/uc_stm32_clock.cpp index 5c3f919569..2df2fdf2a2 100644 --- a/libuavcan_drivers/stm32/driver/src/uc_stm32_clock.cpp +++ b/libuavcan_drivers/stm32/driver/src/uc_stm32_clock.cpp @@ -2,6 +2,7 @@ * Copyright (C) 2014 Pavel Kirienko */ +#include #include #include #include @@ -188,6 +189,9 @@ static void updateRatePID(uavcan::UtcDuration adjustment) rate_correction_ppm = std::min(rate_correction_ppm, utc_sync_params.max_rate_correction_ppm); utc_correction_nsec_per_overflow = (USecPerOverflow * 1000) * (rate_correction_ppm / 1e6F); + + lowsyslog("$ adj=%f rate_err=%f int=%f ppm=%f\n", + adj_usec, utc_inv_rate_error_ppm, utc_integrated_error, rate_correction_ppm); } void adjustUtc(uavcan::UtcDuration adjustment)