#![allow(unused)]
use tmc2209_uart::{MicrostepResolution, Tmc2209};
#[cfg(feature = "blocking")]
fn basic_motor_control<U, E>(uart: U) -> Result<(), tmc2209_uart::Error<E>>
where
U: embedded_io::Read<Error = E> + embedded_io::Write<Error = E>,
{
let mut driver = Tmc2209::new(uart, 0);
if !driver.is_connected() {
return Err(tmc2209_uart::Error::NoResponse);
}
driver.clear_gstat()?;
driver.set_current(20, 10, 6)?;
driver.set_microsteps(MicrostepResolution::M16)?;
driver.set_interpolation(true)?;
driver.enable_stealthchop()?;
driver.set_enabled(true)?;
driver.set_velocity(5000)?;
let status = driver.drv_status()?;
if status.ot() {
driver.stop()?;
driver.set_enabled(false)?;
}
if status.otpw() {
println!("Warning: Motor temperature is high");
}
driver.set_velocity(-5000)?;
driver.stop()?;
Ok(())
}
fn main() {
println!("TMC2209 Basic Example");
println!("This example shows API usage patterns.");
println!("Integrate with your platform's UART for actual use.");
}