Compare commits

...

2 Commits

Author SHA1 Message Date
603113d9ed semi working quadrature output 2023-09-27 23:15:53 -04:00
15fc7d5602 Switch to modified Si5351 driver 2023-09-27 01:38:43 -04:00
2 changed files with 10 additions and 9 deletions

View File

@ -10,5 +10,5 @@ hal = { package = "esp32-hal", version = "0.15.0" }
esp-backtrace = { version = "0.8.0", features = ["esp32", "panic-handler", "exception-handler", "print-uart"] } esp-backtrace = { version = "0.8.0", features = ["esp32", "panic-handler", "exception-handler", "print-uart"] }
esp-println = { version = "0.6.0", features = ["esp32","log"] } esp-println = { version = "0.6.0", features = ["esp32","log"] }
log = { version = "0.4.18" } log = { version = "0.4.18" }
si5351 = "0.2.0" si5351 = { git = "http://192.168.1.41:3000/lks/si5351.git" }
embedded-hal = "0.2.7" embedded-hal = "0.2.7"

View File

@ -94,10 +94,11 @@ fn main() -> ! {
} }
fn main_loop<T: Clockable, U: _esp_hal_uart_Instance>(mut clock: T, mut serial: Uart<'_, U>) -> ! { fn main_loop<T: Clockable, U: _esp_hal_uart_Instance>(mut clock: T, mut serial: Uart<'_, U>) -> ! {
clock.set_freq(1_000_000).unwrap();
loop { loop {
let freq = read_freq(&mut serial); let freq = read_freq(&mut serial);
log::info!("Got Freq: {}", freq); log::info!("Got Freq: {}", freq);
match clock.set_freq(freq) { match clock.set_quad(freq) {
Ok(_) => log::info!("Set frequency to {}", freq), Ok(_) => log::info!("Set frequency to {}", freq),
Err(_) => log::warn!("Could not set frequency to {}", freq), Err(_) => log::warn!("Could not set frequency to {}", freq),
} }
@ -106,9 +107,13 @@ fn main_loop<T: Clockable, U: _esp_hal_uart_Instance>(mut clock: T, mut serial:
trait Clockable { trait Clockable {
fn set_freq(&mut self, freq: u32) -> Result<(), ()>; fn set_freq(&mut self, freq: u32) -> Result<(), ()>;
fn set_quad(&mut self, freq: u32) -> Result<f32, ()>;
} }
impl Clockable for LEDC<'_> { impl Clockable for LEDC<'_> {
fn set_quad(&mut self, _freq: u32) -> Result<f32, ()> {
Err(())
}
fn set_freq(&mut self, freq: u32) -> Result<(), ()> { fn set_freq(&mut self, freq: u32) -> Result<(), ()> {
let mut hstimer0 = self.get_timer::<HighSpeed>(timer::Number::Timer0); let mut hstimer0 = self.get_timer::<HighSpeed>(timer::Number::Timer0);
@ -129,6 +134,9 @@ impl<T> Clockable for Si5351Device<T>
where where
Si5351Device<T>: Si5351, Si5351Device<T>: Si5351,
{ {
fn set_quad(&mut self, freq: u32) -> Result<f32, ()> {
Si5351::set_quad(self, freq).map_err(|_| ())
}
fn set_freq(&mut self, freq: u32) -> Result<(), ()> { fn set_freq(&mut self, freq: u32) -> Result<(), ()> {
match self.set_frequency(si5351::PLL::A, si5351::ClockOutput::Clk0, freq) { match self.set_frequency(si5351::PLL::A, si5351::ClockOutput::Clk0, freq) {
Ok(_) => Ok(()), Ok(_) => Ok(()),
@ -136,13 +144,6 @@ where
} }
} }
} }
struct Dummy;
impl Clockable for Dummy {
fn set_freq(&mut self, freq: u32) -> Result<(), ()> {
log::info!("Dummy set freq: {}", freq);
Ok(())
}
}
// bool inval = false; // bool inval = false;
// char c = serial.read(); // char c = serial.read();