channels: add set_dac()

softspi
Astro 2020-05-13 21:02:26 +02:00
parent eb9aeb160a
commit b9d05ff274
2 changed files with 19 additions and 25 deletions

View File

@ -58,24 +58,30 @@ impl Channels {
};
if let Some(dac_value) = dac_value {
// Forward PID output to i_set DAC
match channel {
0 => {
self.channel0.dac.set(dac_value).unwrap();
self.channel0.shdn.set_high().unwrap();
}
1 => {
self.channel1.dac.set(dac_value).unwrap();
self.channel1.shdn.set_high().unwrap();
}
_ =>
unreachable!(),
}
self.set_dac(channel.into(), dac_value);
}
channel
})
}
/// i_set DAC
pub fn set_dac(&mut self, channel: usize, duty: u32) {
match channel {
0 => {
self.channel0.dac.set(duty).unwrap();
self.channel0.state.dac_value = duty;
self.channel0.shdn.set_high().unwrap();
}
1 => {
self.channel1.dac.set(duty).unwrap();
self.channel1.state.dac_value = duty;
self.channel1.shdn.set_high().unwrap();
}
_ => unreachable!(),
}
}
pub fn read_ref_adc(&mut self, channel: usize) -> u16 {
match channel {
0 => self.channel0.ref_adc.convert(

View File

@ -16,7 +16,6 @@ use cortex_m_rt::entry;
use stm32f4xx_hal::{
hal::{
self,
digital::v2::OutputPin,
watchdog::{WatchdogEnable, Watchdog},
},
rcc::RccExt,
@ -253,18 +252,7 @@ fn main() -> ! {
}
Command::Pwm { channel, pin: PwmPin::ISet, duty } if duty <= ad5680::MAX_VALUE => {
channels.channel_state(channel).pid_engaged = false;
match channel {
0 => {
channels.channel0.dac.set(duty).unwrap();
channels.channel0.shdn.set_high().unwrap();
}
1 => {
channels.channel1.dac.set(duty).unwrap();
channels.channel1.shdn.set_high().unwrap();
}
_ => unreachable!(),
}
channels.channel_state(channel).dac_value = duty;
channels.set_dac(channel, duty);
let _ = writeln!(
socket, "channel {}: PWM duty cycle manually set to {}/{}",
channel, duty, ad5680::MAX_VALUE