Updated library.

This commit is contained in:
2025-08-18 14:49:58 +02:00
parent eaeff4f527
commit d17ef6c7ae
5 changed files with 346 additions and 116 deletions

View File

@@ -4,6 +4,7 @@
use defmt::info;
use embassy_executor::Spawner;
use embassy_stm32::exti::ExtiInput;
use embassy_sync::mutex::Mutex;
use embassy_time::{Timer, Duration};
use embassy_futures::{select::select, select::Either};
use embassy_stm32::gpio::{Level, Output, Speed};
@@ -37,7 +38,7 @@ use communication::{init_communication, LED_FREQUENCY_SIGNAL};
use impedance::IMPEDANCE_CHANNEL;
mod impedance;
use impedance::ImpedanceSetup;
use impedance::{ImpedanceSetup, ImpedanceSetupType, IMPEDANCE_SETUP};
bind_interrupts!(struct Irqs {
USB_DRD_FS => usb::InterruptHandler<peripherals::USB>;
@@ -93,7 +94,9 @@ async fn main(spawner: Spawner) {
// ad5940.init_waveform().await.unwrap();
let mut impedance_setup = ImpedanceSetup::new(ad5940);
impedance_setup.init().await.unwrap();
impedance_setup.init_measurement().await;
let mut impedance_setup = IMPEDANCE_SETUP.init(Mutex::new(impedance_setup));
// impedance_setup.lock().await.init_single_frequency_measurement().await;
// // Set up I2C for ADG2128
// let i2c = i2c::I2c::new_blocking(
@@ -117,13 +120,13 @@ async fn main(spawner: Spawner) {
// Create USB driver and start postcard-rpc server
let driver = Driver::new(p.USB, Irqs, p.PA12, p.PA11);
init_communication(driver, spawner);
init_communication(driver, impedance_setup, spawner);
// Green led task
// spawner.must_spawn(green_led(led));
// Trigger the sequencer
impedance_setup.start_measurement().await;
// impedance_setup.start_measurement().await;
// Set up interrupt at GPIO for AD5940
let ad5940_gpio_0 = ExtiInput::new(p.PC8, p.EXTI8, embassy_stm32::gpio::Pull::Up);
@@ -169,11 +172,14 @@ async fn green_led(mut led: Output<'static>) {
}
#[embassy_executor::task]
async fn impedance_setup_readout_task(mut pin: ExtiInput<'static>, mut impedance_setup: ImpedanceSetup) {
async fn impedance_setup_readout_task(mut pin: ExtiInput<'static>, impedance_setup: &'static ImpedanceSetupType) {
loop {
// Wait untill sequence is done
pin.wait_for_rising_edge().await;
// Lock the impedance setup
let mut impedance_setup = impedance_setup.lock().await;
// Trigger the sequencer again
impedance_setup.start_measurement().await;