From 30316d585db60e75263eba452f6ffd2f2f338dd1 Mon Sep 17 00:00:00 2001 From: morgan Date: Wed, 27 Mar 2024 12:46:50 +0800 Subject: [PATCH] wrpll fw: add delay for reset_plls --- src/libboard_artiq/src/si549.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libboard_artiq/src/si549.rs b/src/libboard_artiq/src/si549.rs index cc7b986..8fa53b3 100644 --- a/src/libboard_artiq/src/si549.rs +++ b/src/libboard_artiq/src/si549.rs @@ -463,11 +463,13 @@ pub mod wrpll { } } - fn reset_plls() -> Result<(), &'static str> { + fn reset_plls(timer: &mut GlobalTimer) -> Result<(), &'static str> { *H_INTEGRATOR.lock() = 0; *M_INTEGRATOR.lock() = 0; set_adpll(i2c::DCXO::Main, 0)?; set_adpll(i2c::DCXO::Helper, 0)?; + // wait for adpll to transfer and DCXO to settle + timer.delay_us(200); Ok(()) } @@ -642,7 +644,7 @@ pub mod wrpll { if rc { tag_collector::reset(); - reset_plls().expect("failed to reset main and helper PLL"); + reset_plls(timer).expect("failed to reset main and helper PLL"); set_base_adpll(timer).expect("failed to set base adpll"); // clear gateware pending flag