forked from M-Labs/thermostat
main: re-enable interrupts
also swap ADC polling and network processing to read the ADC first after an interrupt.
This commit is contained in:
parent
15f64358a2
commit
d203f21caf
29
src/main.rs
29
src/main.rs
|
@ -99,10 +99,12 @@ fn main() -> ! {
|
||||||
adc.setup_channel(0, ad7172::Input::Ain0, ad7172::Input::Ain1).unwrap();
|
adc.setup_channel(0, ad7172::Input::Ain0, ad7172::Input::Ain1).unwrap();
|
||||||
adc.setup_channel(1, ad7172::Input::Ain2, ad7172::Input::Ain3).unwrap();
|
adc.setup_channel(1, ad7172::Input::Ain2, ad7172::Input::Ain3).unwrap();
|
||||||
adc.calibrate_offset().unwrap();
|
adc.calibrate_offset().unwrap();
|
||||||
|
|
||||||
let mut dac0 = ad5680::Dac::new(pins.dac0_spi, pins.dac0_sync);
|
let mut dac0 = ad5680::Dac::new(pins.dac0_spi, pins.dac0_sync);
|
||||||
dac0.set(0).unwrap();
|
dac0.set(0).unwrap();
|
||||||
let mut dac1 = ad5680::Dac::new(pins.dac1_spi, pins.dac1_sync);
|
let mut dac1 = ad5680::Dac::new(pins.dac1_spi, pins.dac1_sync);
|
||||||
dac1.set(0).unwrap();
|
dac1.set(0).unwrap();
|
||||||
|
|
||||||
let mut pwm = pins.pwm;
|
let mut pwm = pins.pwm;
|
||||||
let mut shdn0 = pins.shdn0;
|
let mut shdn0 = pins.shdn0;
|
||||||
let mut shdn1 = pins.shdn1;
|
let mut shdn1 = pins.shdn1;
|
||||||
|
@ -125,13 +127,6 @@ fn main() -> ! {
|
||||||
net::run(dp.ETHERNET_MAC, dp.ETHERNET_DMA, hwaddr, |iface| {
|
net::run(dp.ETHERNET_MAC, dp.ETHERNET_DMA, hwaddr, |iface| {
|
||||||
Server::<Session>::run(iface, |server| {
|
Server::<Session>::run(iface, |server| {
|
||||||
loop {
|
loop {
|
||||||
let instant = Instant::from_millis(i64::from(timer::now()));
|
|
||||||
cortex_m::interrupt::free(net::clear_pending);
|
|
||||||
server.poll(instant)
|
|
||||||
.unwrap_or_else(|e| {
|
|
||||||
warn!("poll: {:?}", e);
|
|
||||||
});
|
|
||||||
|
|
||||||
let instant = Instant::from_millis(i64::from(timer::now()));
|
let instant = Instant::from_millis(i64::from(timer::now()));
|
||||||
// ADC input
|
// ADC input
|
||||||
adc.data_ready().unwrap().map(|channel| {
|
adc.data_ready().unwrap().map(|channel| {
|
||||||
|
@ -159,6 +154,13 @@ fn main() -> ! {
|
||||||
server.for_each(|_, session| session.set_report_pending(channel.into()));
|
server.for_each(|_, session| session.set_report_pending(channel.into()));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let instant = Instant::from_millis(i64::from(timer::now()));
|
||||||
|
cortex_m::interrupt::free(net::clear_pending);
|
||||||
|
server.poll(instant)
|
||||||
|
.unwrap_or_else(|e| {
|
||||||
|
warn!("poll: {:?}", e);
|
||||||
|
});
|
||||||
|
|
||||||
// TCP protocol handling
|
// TCP protocol handling
|
||||||
server.for_each(|mut socket, session| {
|
server.for_each(|mut socket, session| {
|
||||||
if ! socket.is_active() {
|
if ! socket.is_active() {
|
||||||
|
@ -418,12 +420,13 @@ fn main() -> ! {
|
||||||
// Update watchdog
|
// Update watchdog
|
||||||
wd.feed();
|
wd.feed();
|
||||||
|
|
||||||
// cortex_m::interrupt::free(|cs| {
|
cortex_m::interrupt::free(|cs| {
|
||||||
// if !net::is_pending(cs) {
|
if !net::is_pending(cs) {
|
||||||
// // Wait for interrupts
|
// Wait for interrupts
|
||||||
// wfi();
|
// (Ethernet or SysTick)
|
||||||
// }
|
wfi();
|
||||||
// });
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue