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},
|
||||
com_interface::ComInterface,
|
||||
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},
|
||||
low_power::{no_deep_sleep_request, Executor},
|
||||
task,
|
||||
@ -28,11 +28,11 @@ fn i2c_init() -> (I2c, I2c) {
|
||||
(i2c_plus, i2c_minus)
|
||||
}
|
||||
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 green: gpio::GpioPort = gpio::PB8;
|
||||
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 s3: gpio::GpioPort = gpio::PB4;
|
||||
let s4: gpio::GpioPort = gpio::PB5;
|
||||
@ -46,8 +46,7 @@ fn switch_led_setup() -> ( gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio:
|
||||
green.setup();
|
||||
red.setup();
|
||||
s0.setup();
|
||||
s0.setup();
|
||||
// s1.setup();
|
||||
s1.setup();
|
||||
s2.setup();
|
||||
s3.setup();
|
||||
s4.setup();
|
||||
@ -56,7 +55,7 @@ fn switch_led_setup() -> ( gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio:
|
||||
s7.setup();
|
||||
s8.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;
|
||||
|
||||
#[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.
|
||||
// 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);
|
||||
unsafe {
|
||||
no_deep_sleep_request();
|
||||
}
|
||||
TIM1_CH2_PA9.setup();
|
||||
// TIM1_CH3_PA10.setup();
|
||||
//TIM1_CH2_PA9.setup();
|
||||
//TIM1_CH3_PA10.setup();
|
||||
TIM3_CH1_PA6.setup();
|
||||
let _ = TIM1.init(Config::default());
|
||||
let _ = TIM3.init(Config::default());
|
||||
//TIM1.set_pwm(1, 160, 80);
|
||||
TIM1.set_pwm(2, 320, 160);
|
||||
//TIM1.set_pwm(3, 160000, 80000);
|
||||
//TIM1.set_pwm(2, 1600, 800);
|
||||
//TIM1.set_pwm(3, 1600, 800);
|
||||
TIM3.set_pwm(1, 16, 8);
|
||||
// TIM3.set_pwm(2, 160, 80);
|
||||
//TIM1.enable_output(1);
|
||||
TIM1.enable_output(2);
|
||||
//TIM1.enable_output(2);
|
||||
//TIM1.enable_output(3);
|
||||
TIM3.enable_output(1);
|
||||
//TIM3.enable_output(2);
|
||||
clock::set_mco(
|
||||
gpio::GPIO_MCO_PA8,
|
||||
clock::Mcosel::HSE,
|
||||
clock::Mcopre::DIV8,
|
||||
clock::Mcopre::DIV16,
|
||||
); // clock. which use PA8 as clock output
|
||||
|
||||
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();
|
||||
//s1.set_low();
|
||||
s1.set_low();
|
||||
s2.set_low();
|
||||
s3.set_high();
|
||||
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, 0xD0]);
|
||||
}
|
||||
// for i in 0..4 {
|
||||
// i2c_send(&mut i2c_minus, NEG_DAC_1_ADDR, [DAC_REG_BASE + i, 0x50]);
|
||||
// }
|
||||
// for i in 0..4 {
|
||||
// i2c_send(&mut i2c_minus, NEG_DAC_2_ADDR, [DAC_REG_BASE + i, 0x50]);
|
||||
// }
|
||||
for i in 0..4 {
|
||||
i2c_send(&mut i2c_minus, NEG_DAC_1_ADDR, [DAC_REG_BASE + i, 0x50]);
|
||||
}
|
||||
for i in 0..4 {
|
||||
i2c_send(&mut i2c_minus, NEG_DAC_2_ADDR, [DAC_REG_BASE + i, 0x50]);
|
||||
}
|
||||
defmt::info!("i2c finished!");
|
||||
|
||||
|
||||
@ -152,61 +151,43 @@ async fn async_main(spawner: Spawner) {
|
||||
defmt::info!("Vref init! {}", vref);
|
||||
let vref = vref / 16384.0;
|
||||
delay_s(1);
|
||||
let mut adc_values = [0.0; 5];
|
||||
let mut adc_indexer = 0;
|
||||
let mut adc_sum = 0.0;
|
||||
|
||||
|
||||
loop {
|
||||
// s1.set_high();
|
||||
// s2.set_high();
|
||||
// delay_us(100);
|
||||
// s2.set_low();
|
||||
// delay_us(300);
|
||||
// s1.set_low();
|
||||
// s3.set_high();
|
||||
// delay_us(600);
|
||||
// s3.set_low();
|
||||
// counter += 1;
|
||||
// if counter >= 60000 {
|
||||
// s8.set_high();
|
||||
// delay_ms(10);
|
||||
// s8.set_low();
|
||||
// counter = 0;
|
||||
// }
|
||||
s2.set_high();
|
||||
delay_us(100);
|
||||
s2.set_low();
|
||||
delay_us(100);
|
||||
s1.set_high();
|
||||
delay_us(200);
|
||||
s1.set_low();
|
||||
delay_us(600);
|
||||
|
||||
// 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;
|
||||
if counter >= 997 {
|
||||
let res = tmp_adc.start_conversion_sw(5);
|
||||
let vpos = res as f64 * vref;
|
||||
adc_sum -= adc_values[adc_indexer];
|
||||
adc_values[adc_indexer] = vpos;
|
||||
adc_sum += vpos;
|
||||
defmt::info!("adc average value: {}", adc_sum/4.0);
|
||||
adc_indexer += 1;
|
||||
adc_indexer %= 5;
|
||||
|
||||
if counter >= 1000{
|
||||
TIM1_CH2_PA9.setup();
|
||||
TIM1.set_pwm(2, 1600, 1580);
|
||||
TIM1.enable_output(2);
|
||||
//TIM1.set_pwm(2, 1600, 1550);
|
||||
let mut adc_sum = 0.0;
|
||||
for i in 0..5 {
|
||||
let res = tmp_adc.start_conversion_sw(5);
|
||||
let vpos = res as f64 * vref;
|
||||
adc_sum += vpos;
|
||||
}
|
||||
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();
|
||||
// red.toggle();
|
||||
delay_ms(1);
|
||||
//delay_ms(1);
|
||||
//defmt::info!("toggle leds");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user