commit on july 30
This commit is contained in:
parent
424f0238b7
commit
51c86ea394
117
src/main.rs
117
src/main.rs
@ -10,7 +10,7 @@ use u5_lib::{
|
|||||||
clock::{self, delay_ms, delay_s, delay_us},
|
clock::{self, delay_ms, delay_s, delay_us},
|
||||||
com_interface::ComInterface,
|
com_interface::ComInterface,
|
||||||
exti,
|
exti,
|
||||||
gpio::{self, GpioPort, TIM1_CH2_PA9,/*TIM1_CH3_PA10, */ TIM3_CH1_PA6},
|
gpio::{self, GpioPort, TIM1_CH2_PA9, /*TIM1_CH3_PA10,*/ TIM3_CH1_PA6},
|
||||||
i2c::{self, I2c},
|
i2c::{self, I2c},
|
||||||
low_power::{no_deep_sleep_request, Executor},
|
low_power::{no_deep_sleep_request, Executor},
|
||||||
task,
|
task,
|
||||||
@ -28,11 +28,11 @@ fn i2c_init() -> (I2c, I2c) {
|
|||||||
(i2c_plus, i2c_minus)
|
(i2c_plus, i2c_minus)
|
||||||
}
|
}
|
||||||
fn switch_led_setup() -> ( gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort,
|
fn switch_led_setup() -> ( gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort,
|
||||||
gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort){
|
gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort){
|
||||||
let red: gpio::GpioPort = gpio::PB7;
|
let red: gpio::GpioPort = gpio::PB7;
|
||||||
let green: gpio::GpioPort = gpio::PB8;
|
let green: gpio::GpioPort = gpio::PB8;
|
||||||
let s0: gpio::GpioPort = gpio::PB15;
|
let s0: gpio::GpioPort = gpio::PB15;
|
||||||
//let s1: gpio::GpioPort = gpio::PA9;
|
let s1: gpio::GpioPort = gpio::PA9;
|
||||||
let s2: gpio::GpioPort = gpio::PA10;
|
let s2: gpio::GpioPort = gpio::PA10;
|
||||||
let s3: gpio::GpioPort = gpio::PB4;
|
let s3: gpio::GpioPort = gpio::PB4;
|
||||||
let s4: gpio::GpioPort = gpio::PB5;
|
let s4: gpio::GpioPort = gpio::PB5;
|
||||||
@ -46,8 +46,7 @@ fn switch_led_setup() -> ( gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio:
|
|||||||
green.setup();
|
green.setup();
|
||||||
red.setup();
|
red.setup();
|
||||||
s0.setup();
|
s0.setup();
|
||||||
s0.setup();
|
s1.setup();
|
||||||
// s1.setup();
|
|
||||||
s2.setup();
|
s2.setup();
|
||||||
s3.setup();
|
s3.setup();
|
||||||
s4.setup();
|
s4.setup();
|
||||||
@ -56,7 +55,7 @@ fn switch_led_setup() -> ( gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio:
|
|||||||
s7.setup();
|
s7.setup();
|
||||||
s8.setup();
|
s8.setup();
|
||||||
chopper_clk.setup();
|
chopper_clk.setup();
|
||||||
(green, red, s0, s2, s3, s4, s5, s7, s8, chopper_clk)
|
(green, red, s0, s1, s2, s3, s4, s5, s7, s8, chopper_clk)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,38 +75,38 @@ const NEG_DAC_2_ADDR: u16 = 0xE0;
|
|||||||
const DAC_REG_BASE: u8 = 0xF8;
|
const DAC_REG_BASE: u8 = 0xF8;
|
||||||
|
|
||||||
#[task]
|
#[task]
|
||||||
async fn async_main(spawner: Spawner) {
|
async fn async_main(spawner: Spawner){
|
||||||
// be careful, if the dbg is not enabled, but using deep sleep. This framework will not able to connect to chip.
|
// be careful, if the dbg is not enabled, but using deep sleep. This framework will not able to connect to chip.
|
||||||
// stm32cube programmer, stmcubeide can be used to program the chip, then this framework can be used to debug.
|
// stm32cube programmer, stmcubeide can be used to program the chip, then this framework can be used to debug.
|
||||||
clock::init_clock(true, true, 16_000_000, true, clock::ClockFreqs::KernelFreq16Mhz);
|
clock::init_clock(true, true, 16_000_000, true, clock::ClockFreqs::KernelFreq16Mhz);
|
||||||
unsafe {
|
unsafe {
|
||||||
no_deep_sleep_request();
|
no_deep_sleep_request();
|
||||||
}
|
}
|
||||||
TIM1_CH2_PA9.setup();
|
//TIM1_CH2_PA9.setup();
|
||||||
// TIM1_CH3_PA10.setup();
|
//TIM1_CH3_PA10.setup();
|
||||||
TIM3_CH1_PA6.setup();
|
TIM3_CH1_PA6.setup();
|
||||||
let _ = TIM1.init(Config::default());
|
let _ = TIM1.init(Config::default());
|
||||||
let _ = TIM3.init(Config::default());
|
let _ = TIM3.init(Config::default());
|
||||||
//TIM1.set_pwm(1, 160, 80);
|
//TIM1.set_pwm(1, 160, 80);
|
||||||
TIM1.set_pwm(2, 320, 160);
|
//TIM1.set_pwm(2, 1600, 800);
|
||||||
//TIM1.set_pwm(3, 160000, 80000);
|
//TIM1.set_pwm(3, 1600, 800);
|
||||||
TIM3.set_pwm(1, 16, 8);
|
TIM3.set_pwm(1, 16, 8);
|
||||||
// TIM3.set_pwm(2, 160, 80);
|
// TIM3.set_pwm(2, 160, 80);
|
||||||
//TIM1.enable_output(1);
|
//TIM1.enable_output(1);
|
||||||
TIM1.enable_output(2);
|
//TIM1.enable_output(2);
|
||||||
//TIM1.enable_output(3);
|
//TIM1.enable_output(3);
|
||||||
TIM3.enable_output(1);
|
TIM3.enable_output(1);
|
||||||
//TIM3.enable_output(2);
|
//TIM3.enable_output(2);
|
||||||
clock::set_mco(
|
clock::set_mco(
|
||||||
gpio::GPIO_MCO_PA8,
|
gpio::GPIO_MCO_PA8,
|
||||||
clock::Mcosel::HSE,
|
clock::Mcosel::HSE,
|
||||||
clock::Mcopre::DIV8,
|
clock::Mcopre::DIV16,
|
||||||
); // clock. which use PA8 as clock output
|
); // clock. which use PA8 as clock output
|
||||||
|
|
||||||
defmt::info!("setup led finished!");
|
defmt::info!("setup led finished!");
|
||||||
let (green, red, s0, s2, s3, s4, s5, s7, s8, chopper_clk) = switch_led_setup();
|
let (green, red, s0, s1, s2, s3, s4, s5, s7, s8, chopper_clk) = switch_led_setup();
|
||||||
s0.set_low();
|
s0.set_low();
|
||||||
//s1.set_low();
|
s1.set_low();
|
||||||
s2.set_low();
|
s2.set_low();
|
||||||
s3.set_high();
|
s3.set_high();
|
||||||
s4.set_low();
|
s4.set_low();
|
||||||
@ -126,12 +125,12 @@ async fn async_main(spawner: Spawner) {
|
|||||||
//i2c_send(&mut i2c_plus, POS_DAC_2_ADDR, [DAC_REG_BASE + i, 0xA8]);
|
//i2c_send(&mut i2c_plus, POS_DAC_2_ADDR, [DAC_REG_BASE + i, 0xA8]);
|
||||||
i2c_send(&mut i2c_plus, POS_DAC_2_ADDR, [DAC_REG_BASE + i, 0xD0]);
|
i2c_send(&mut i2c_plus, POS_DAC_2_ADDR, [DAC_REG_BASE + i, 0xD0]);
|
||||||
}
|
}
|
||||||
// for i in 0..4 {
|
for i in 0..4 {
|
||||||
// i2c_send(&mut i2c_minus, NEG_DAC_1_ADDR, [DAC_REG_BASE + i, 0x50]);
|
i2c_send(&mut i2c_minus, NEG_DAC_1_ADDR, [DAC_REG_BASE + i, 0x50]);
|
||||||
// }
|
}
|
||||||
// for i in 0..4 {
|
for i in 0..4 {
|
||||||
// i2c_send(&mut i2c_minus, NEG_DAC_2_ADDR, [DAC_REG_BASE + i, 0x50]);
|
i2c_send(&mut i2c_minus, NEG_DAC_2_ADDR, [DAC_REG_BASE + i, 0x50]);
|
||||||
// }
|
}
|
||||||
defmt::info!("i2c finished!");
|
defmt::info!("i2c finished!");
|
||||||
|
|
||||||
|
|
||||||
@ -152,61 +151,43 @@ async fn async_main(spawner: Spawner) {
|
|||||||
defmt::info!("Vref init! {}", vref);
|
defmt::info!("Vref init! {}", vref);
|
||||||
let vref = vref / 16384.0;
|
let vref = vref / 16384.0;
|
||||||
delay_s(1);
|
delay_s(1);
|
||||||
let mut adc_values = [0.0; 5];
|
|
||||||
let mut adc_indexer = 0;
|
|
||||||
let mut adc_sum = 0.0;
|
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
// s1.set_high();
|
s2.set_high();
|
||||||
// s2.set_high();
|
delay_us(100);
|
||||||
// delay_us(100);
|
s2.set_low();
|
||||||
// s2.set_low();
|
delay_us(100);
|
||||||
// delay_us(300);
|
s1.set_high();
|
||||||
// s1.set_low();
|
delay_us(200);
|
||||||
// s3.set_high();
|
s1.set_low();
|
||||||
// delay_us(600);
|
delay_us(600);
|
||||||
// s3.set_low();
|
|
||||||
// counter += 1;
|
|
||||||
// if counter >= 60000 {
|
|
||||||
// s8.set_high();
|
|
||||||
// delay_ms(10);
|
|
||||||
// s8.set_low();
|
|
||||||
// counter = 0;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// s1.set_high();
|
|
||||||
// delay_us(10);
|
|
||||||
// for i in 0..12{
|
|
||||||
// s6.set_high();
|
|
||||||
// delay_us(5);
|
|
||||||
// s6.set_low();
|
|
||||||
// delay_us(5)
|
|
||||||
// }
|
|
||||||
counter += 1;
|
counter += 1;
|
||||||
if counter >= 997 {
|
if counter >= 1000{
|
||||||
let res = tmp_adc.start_conversion_sw(5);
|
TIM1_CH2_PA9.setup();
|
||||||
let vpos = res as f64 * vref;
|
TIM1.set_pwm(2, 1600, 1580);
|
||||||
adc_sum -= adc_values[adc_indexer];
|
TIM1.enable_output(2);
|
||||||
adc_values[adc_indexer] = vpos;
|
//TIM1.set_pwm(2, 1600, 1550);
|
||||||
adc_sum += vpos;
|
let mut adc_sum = 0.0;
|
||||||
defmt::info!("adc average value: {}", adc_sum/4.0);
|
for i in 0..5 {
|
||||||
adc_indexer += 1;
|
let res = tmp_adc.start_conversion_sw(5);
|
||||||
adc_indexer %= 5;
|
let vpos = res as f64 * vref;
|
||||||
|
adc_sum += vpos;
|
||||||
|
}
|
||||||
counter = 0;
|
counter = 0;
|
||||||
|
//TIM1.set_pwm(2, 1600, 800);
|
||||||
|
defmt::info!("adc average value: {}", adc_sum / 5.0);
|
||||||
|
if adc_sum / 5.0 > 0.5{ // the value should change accordingly
|
||||||
|
red.set_high();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
red.set_low();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// s1.set_low();
|
|
||||||
// delay_us(10);
|
|
||||||
// for i in 0..12{
|
|
||||||
// s6.set_high();
|
|
||||||
// delay_us(5);
|
|
||||||
// s6.set_low();
|
|
||||||
// delay_us(5)
|
|
||||||
// }
|
|
||||||
|
|
||||||
green.toggle();
|
green.toggle();
|
||||||
// red.toggle();
|
// red.toggle();
|
||||||
delay_ms(1);
|
//delay_ms(1);
|
||||||
//defmt::info!("toggle leds");
|
//defmt::info!("toggle leds");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user