*: cargo fmt
This commit is contained in:
parent
9948a76602
commit
fe8942575a
7 changed files with 156 additions and 151 deletions
|
|
@ -1,10 +1,9 @@
|
|||
use esp_hal::mcpwm::operator::PwmPin;
|
||||
use esp_hal::delay::Delay;
|
||||
use crate::dc_driver::EscState;
|
||||
use esp_hal::delay::Delay;
|
||||
use esp_hal::mcpwm::operator::PwmPin;
|
||||
pub struct AfroEsc<'a> {
|
||||
pub pwm_pin: &'a mut PwmPin<'a, esp_hal::peripherals::MCPWM0<'a>, 0, true>,
|
||||
state: crate::dc_driver::EscState,
|
||||
|
||||
}
|
||||
const ARMING_SEQUENCE: u16 = 1055;
|
||||
const MIN_THROTTLE: u16 = 1121;
|
||||
|
|
@ -13,15 +12,19 @@ const GAP:u16 = (MAX_THROTTLE - MIN_THROTTLE)/100;
|
|||
|
||||
impl AfroEsc<'_> {
|
||||
//this is a little hacky tbh
|
||||
pub fn new<'a>(pwm_pin:&'a mut PwmPin<'a, esp_hal::peripherals::MCPWM0<'a>, 0,true>)-> AfroEsc<'a> {
|
||||
let mut esc = AfroEsc{pwm_pin:pwm_pin,state:EscState::Starting};
|
||||
pub fn new<'a>(
|
||||
pwm_pin: &'a mut PwmPin<'a, esp_hal::peripherals::MCPWM0<'a>, 0, true>,
|
||||
) -> AfroEsc<'a> {
|
||||
let mut esc = AfroEsc {
|
||||
pwm_pin: pwm_pin,
|
||||
state: EscState::Starting,
|
||||
};
|
||||
let delay = Delay::new();
|
||||
esc.send_arming_sequence();
|
||||
delay.delay_millis(3000);
|
||||
esc
|
||||
}
|
||||
pub fn set_timestamp(&mut self, value: u16) {
|
||||
|
||||
self.pwm_pin.set_timestamp(value);
|
||||
}
|
||||
//range is from 1121 till 1421
|
||||
|
|
@ -45,12 +48,12 @@ impl AfroEsc<'_>{
|
|||
pub fn map_duty(&mut self, x: i32) {
|
||||
if x <= 0 {
|
||||
self.pwm_pin.set_timestamp(1055);
|
||||
}
|
||||
else{
|
||||
let duty:u16 = crate::dc_driver::arduino_map(x, 0, 100, MIN_THROTTLE.into(), MAX_THROTTLE.into()).try_into().expect("INTEGER TOO LARGE");
|
||||
} else {
|
||||
let duty: u16 =
|
||||
crate::dc_driver::arduino_map(x, 0, 100, MIN_THROTTLE.into(), MAX_THROTTLE.into())
|
||||
.try_into()
|
||||
.expect("INTEGER TOO LARGE");
|
||||
self.pwm_pin.set_timestamp(duty);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -61,7 +61,6 @@ impl BitTicks {
|
|||
bittick.t0_l = bit_ticks - t0_h;
|
||||
bittick.t1_l = bit_ticks - t1_h;
|
||||
bittick
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -141,7 +140,13 @@ impl<'a> DShot<'a> {
|
|||
let clk_speed = clk_speed.unwrap_or(80_000_000);
|
||||
let clk_divider = clk_divider.unwrap_or(1);
|
||||
let bit_ticks = BitTicks::from_clk(clk_speed, clk_divider, speed.bit_times(), speed);
|
||||
rprint!("bit_ticks.t1_h:{},t1_l:{},t0_h:{},t0_l{}",bit_ticks.t1_h,bit_ticks.t1_l,bit_ticks.t0_h,bit_ticks.t0_l);
|
||||
rprint!(
|
||||
"bit_ticks.t1_h:{},t1_l:{},t0_h:{},t0_l{}",
|
||||
bit_ticks.t1_h,
|
||||
bit_ticks.t1_l,
|
||||
bit_ticks.t0_h,
|
||||
bit_ticks.t0_l
|
||||
);
|
||||
Self {
|
||||
rx_channel: rx_channel,
|
||||
tx_channel: tx_channel,
|
||||
|
|
|
|||
|
|
@ -4,14 +4,10 @@ pub enum EscState {
|
|||
Starting,
|
||||
Running,
|
||||
Stopping,
|
||||
Stop
|
||||
|
||||
Stop,
|
||||
}
|
||||
//taken from: https://docs.arduino.cc/language-reference/en/functions/math/map/
|
||||
//used for the ramp up of the spincoater
|
||||
pub fn arduino_map(x: i32, in_min: i32, in_max: i32, out_min: i32, out_max: i32) -> i32 {
|
||||
|
||||
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,18 +6,18 @@
|
|||
holding buffers for the duration of a data transfer."
|
||||
)]
|
||||
use alloc::string::ToString;
|
||||
use esp_hal::uart::{Config, Uart};
|
||||
use esp_hal::clock::CpuClock;
|
||||
use esp_hal::delay::Delay;
|
||||
use esp_hal::main;
|
||||
use esp_hal::uart::{Config, Uart};
|
||||
|
||||
use esp_hal::gpio::Event;
|
||||
use esp_hal::gpio::{Input, InputConfig};
|
||||
use esp_hal::handler;
|
||||
use esp_hal::mcpwm::operator::PwmPinConfig;
|
||||
use esp_hal::mcpwm::timer::PwmWorkingMode;
|
||||
use esp_hal::time::Rate;
|
||||
use esp_hal::rmt::{Rmt, TxChannelConfig, TxChannelCreator};
|
||||
use esp_hal::handler;
|
||||
use esp_hal::time::Rate;
|
||||
|
||||
use core::cell::RefCell;
|
||||
use critical_section::Mutex;
|
||||
|
|
@ -36,10 +36,10 @@ use peripherals::nextion::Nextion;
|
|||
use dc_driver::dshot::DShot;
|
||||
use dc_driver::dshot::DShotSpeed;
|
||||
|
||||
use esp_hal::rmt::RxChannelCreator;
|
||||
use esp_hal::rmt::RxChannelConfig;
|
||||
use crate::dc_driver::dshot;
|
||||
use crate::peripherals::ErrCommand;
|
||||
use esp_hal::rmt::RxChannelConfig;
|
||||
use esp_hal::rmt::RxChannelCreator;
|
||||
#[panic_handler]
|
||||
fn panic(_: &core::panic::PanicInfo) -> ! {
|
||||
rprintln!("PANIC!");
|
||||
|
|
@ -57,8 +57,8 @@ const DEFAULT_SPIN_TIME: u32 = 10;
|
|||
// For more information see: <https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/app_image_format.html#application-description>
|
||||
esp_bootloader_esp_idf::esp_app_desc!();
|
||||
use crate::peripherals::Command;
|
||||
use esp_hal::gpio::Output;
|
||||
use esp_hal::gpio::Level;
|
||||
use esp_hal::gpio::Output;
|
||||
use esp_hal::gpio::OutputConfig;
|
||||
|
||||
#[main]
|
||||
|
|
@ -92,16 +92,27 @@ fn main() -> ! {
|
|||
let rx_config = RxChannelConfig::default().with_clk_divider(1);
|
||||
let tx_config = TxChannelConfig::default().with_clk_divider(1);
|
||||
let mut toggle_pin = Output::new(peripherals.GPIO2, Level::Low, OutputConfig::default());
|
||||
let mut tx_channel = rmt.channel0.configure_tx(peripherals.GPIO23,tx_config ).expect("creation of TX_CHANNEL FAILED!");
|
||||
let mut rx_channel = rmt.channel3.configure_rx(peripherals.GPIO14,rx_config).unwrap();
|
||||
let mut dshot_esc = dshot::DShot::new(&mut rx_channel, &mut tx_channel, DShotSpeed::DShot600, Some(80_000_000), Some(1));
|
||||
let mut tx_channel = rmt
|
||||
.channel0
|
||||
.configure_tx(peripherals.GPIO23, tx_config)
|
||||
.expect("creation of TX_CHANNEL FAILED!");
|
||||
let mut rx_channel = rmt
|
||||
.channel3
|
||||
.configure_rx(peripherals.GPIO14, rx_config)
|
||||
.unwrap();
|
||||
let mut dshot_esc = dshot::DShot::new(
|
||||
&mut rx_channel,
|
||||
&mut tx_channel,
|
||||
DShotSpeed::DShot600,
|
||||
Some(80_000_000),
|
||||
Some(1),
|
||||
);
|
||||
rprintln!("SENDING RMT");
|
||||
loop {
|
||||
delay.delay_millis(1000);
|
||||
toggle_pin.set_high();
|
||||
dshot_esc.write_throttle(2047, true);
|
||||
toggle_pin.set_low();
|
||||
|
||||
}
|
||||
// rprintln!("RMT SENT!");
|
||||
// let mut esc = AfroEsc::new(&mut pwm_pin);;
|
||||
|
|
@ -150,28 +161,28 @@ fn main() -> ! {
|
|||
Ok(Command::Start) => {
|
||||
rprintln!("START");
|
||||
started = true;
|
||||
},
|
||||
}
|
||||
Ok(Command::Stop) => {
|
||||
rprintln!("STOP");
|
||||
started = false;
|
||||
// spincoater.stop();
|
||||
},
|
||||
}
|
||||
Ok(Command::SetRpm(x)) => {
|
||||
rprintln!("SET_RPM with {}", x);
|
||||
rpm = x;
|
||||
},
|
||||
}
|
||||
Ok(Command::SetTimer(x)) => {
|
||||
rprintln!("SETTING TIMER {}", x);
|
||||
timer = x;
|
||||
},
|
||||
}
|
||||
Ok(Command::SendConfig) => {
|
||||
rprintln!("SEND CONFIG");
|
||||
let command = format!("rpm.val={}", DEFAULT_TARGET_RPM);
|
||||
display.send_command(command.to_string().as_bytes());
|
||||
},
|
||||
}
|
||||
Err(ErrCommand::NoValidCmd) => {
|
||||
rprintln!(" NOT A VALID CMD!");
|
||||
},
|
||||
}
|
||||
Err(ErrCommand::ReadError) => {
|
||||
rprintln!("READ FAILED!");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@ pub enum Command{
|
|||
Start,
|
||||
Stop,
|
||||
SendConfig,
|
||||
CommandSuccess
|
||||
CommandSuccess,
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub enum ErrCommand {
|
||||
NoValidCmd,
|
||||
ReadError
|
||||
ReadError,
|
||||
}
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
use esp_hal::Blocking;
|
||||
use esp_hal::uart::RxError;
|
||||
use esp_hal::uart::{Uart};
|
||||
use esp_hal::{Blocking };
|
||||
use esp_hal::uart::Uart;
|
||||
use rtt_target::rprintln;
|
||||
|
||||
use crate::peripherals::{ErrCommand,Command};
|
||||
use crate::peripherals::{Command, ErrCommand};
|
||||
|
||||
enum UartStatemachine {
|
||||
WaitingP,
|
||||
|
|
@ -97,38 +97,28 @@ impl<'a> Nextion<'a> {
|
|||
let mut buf: [u8; 8] = [0; 8];
|
||||
let _read_bytes = match self.read_frame(&mut buf) {
|
||||
Ok(x) => x,
|
||||
Err(e) => {rprintln!("ERROR while reading");
|
||||
Err(e) => {
|
||||
rprintln!("ERROR while reading");
|
||||
return Err(ErrCommand::NoValidCmd);
|
||||
}
|
||||
};
|
||||
|
||||
rprintln!("READ SUCCESS!:{:?}", buf);
|
||||
match buf[0] {
|
||||
|
||||
01 => {Ok(Command::Start)},
|
||||
02 =>{Ok(Command::Stop)},
|
||||
01 => Ok(Command::Start),
|
||||
02 => Ok(Command::Stop),
|
||||
03 => {
|
||||
let rpm = u32::from_le_bytes(buf[1..5].try_into().expect("failed to parse rpm!"));
|
||||
Ok(Command::SetRpm(rpm))
|
||||
},
|
||||
}
|
||||
04 => {
|
||||
let time = u32::from_le_bytes(buf[1..5].try_into().expect("failed to parse time!"));
|
||||
Ok(Command::SetTimer(time))
|
||||
}
|
||||
05 =>{
|
||||
Ok(Command::SendConfig)
|
||||
05 => Ok(Command::SendConfig),
|
||||
00 => Ok(Command::CommandSuccess),
|
||||
_ => Err(ErrCommand::NoValidCmd),
|
||||
}
|
||||
00 => {
|
||||
Ok(Command::CommandSuccess)
|
||||
},
|
||||
_ => {
|
||||
Err(ErrCommand::NoValidCmd)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
pub fn read_ready(&mut self) -> bool {
|
||||
self.interface.read_ready()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue