From 06e82ddd4a5065794a7d272cbbb58e5214482954 Mon Sep 17 00:00:00 2001 From: Ryan Summers Date: Thu, 11 Jun 2020 10:37:50 +0200 Subject: [PATCH] Fixing attenuator configuration --- stabilizer/src/main.rs | 6 +++--- stabilizer/src/pounder/mod.rs | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/stabilizer/src/main.rs b/stabilizer/src/main.rs index a514c05..2e76070 100644 --- a/stabilizer/src/main.rs +++ b/stabilizer/src/main.rs @@ -386,9 +386,9 @@ const APP: () = { }; let spi = { - let spi_mosi = gpiod.pd7.into_alternate_af5(); - let spi_miso = gpioa.pa6.into_alternate_af5(); - let spi_sck = gpiog.pg11.into_alternate_af5(); + let spi_mosi = gpiod.pd7.into_alternate_af5().set_speed(hal::gpio::Speed::VeryHigh); + let spi_miso = gpioa.pa6.into_alternate_af5().set_speed(hal::gpio::Speed::VeryHigh); + let spi_sck = gpiog.pg11.into_alternate_af5().set_speed(hal::gpio::Speed::VeryHigh); let config = hal::spi::Config::new(hal::spi::Mode{ polarity: hal::spi::Polarity::IdleHigh, diff --git a/stabilizer/src/pounder/mod.rs b/stabilizer/src/pounder/mod.rs index cef9f81..5b9822f 100644 --- a/stabilizer/src/pounder/mod.rs +++ b/stabilizer/src/pounder/mod.rs @@ -2,6 +2,7 @@ use mcp23017; use ad9959; use serde::{Serialize, Deserialize}; + mod attenuators; mod rf_power; @@ -12,7 +13,7 @@ use rf_power::PowerMeasurementInterface; use embedded_hal::{ blocking::spi::Transfer, - adc::OneShot + adc::OneShot, }; const EXT_CLK_SEL_PIN: u8 = 8 + 7; @@ -243,12 +244,13 @@ where }; // Configure power-on-default state for pounder. All LEDs are on, on-board oscillator - // selected, attenuators out of reset. + // selected, attenuators out of reset. Note that testing indicates the output state needs to + // be set first to properly update the output registers. + devices.mcp23017.all_pin_mode(mcp23017::PinMode::OUTPUT).map_err(|_| Error::I2c)?; devices.mcp23017.write_gpio(mcp23017::Port::GPIOA, 0x3F).map_err(|_| Error::I2c)?; devices.mcp23017.write_gpio(mcp23017::Port::GPIOB, 1 << 5).map_err(|_| Error::I2c)?; - devices.mcp23017.all_pin_mode(mcp23017::PinMode::OUTPUT).map_err(|_| Error::I2c)?; - // Select the on-board clock with a 5x prescaler (500MHz). + // Select the on-board clock with a 4x prescaler (400MHz). devices.select_onboard_clock(4u8)?; Ok(devices)