From 99fdf4dfd46e6d4f1838a08f5a137cedb91f3600 Mon Sep 17 00:00:00 2001 From: Cecile Tonglet Date: Sun, 4 Oct 2020 12:20:48 +0200 Subject: [PATCH] sparkfun-pro-micro: Fixup wrong pins and update examples --- .../examples/pro-micro-adc.rs | 13 +++--- .../examples/pro-micro-interrupt.rs | 4 +- .../examples/pro-micro-pwm.rs | 4 +- boards/sparkfun-pro-micro/src/pins.rs | 44 +++++++------------ 4 files changed, 27 insertions(+), 38 deletions(-) diff --git a/boards/sparkfun-pro-micro/examples/pro-micro-adc.rs b/boards/sparkfun-pro-micro/examples/pro-micro-adc.rs index c104ddd83e..c7306474cb 100644 --- a/boards/sparkfun-pro-micro/examples/pro-micro-adc.rs +++ b/boards/sparkfun-pro-micro/examples/pro-micro-adc.rs @@ -1,8 +1,9 @@ #![no_std] #![no_main] -extern crate panic_halt; +use sparkfun_pro_micro::adc; use sparkfun_pro_micro::prelude::*; +use panic_halt as _; #[sparkfun_pro_micro::entry] fn main() -> ! { @@ -19,7 +20,7 @@ fn main() -> ! { ufmt::uwriteln!(&mut serial, "Reading analog inputs ...\r").void_unwrap(); - let mut adc = sparkfun_pro_micro::adc::Adc::new(dp.ADC, Default::default()); + let mut adc = adc::Adc::new(dp.ADC, Default::default()); let (vbg, gnd, temp): (u16, u16, u16) = ( nb::block!(adc.read(&mut sparkfun_pro_micro::adc::channel::Vbg)).void_unwrap(), @@ -35,8 +36,8 @@ fn main() -> ! { let mut a1 = pins.a1.into_analog_input(&mut adc); let mut a2 = pins.a2.into_analog_input(&mut adc); let mut a3 = pins.a3.into_analog_input(&mut adc); - let mut a4 = pins.a4.into_analog_input(&mut adc); - let mut a5 = pins.a5.into_analog_input(&mut adc); + let mut d4 = pins.d4.into_analog_input(&mut adc); + let mut d8 = pins.d8.into_analog_input(&mut adc); loop { let values: [u16; 6] = [ @@ -44,8 +45,8 @@ fn main() -> ! { nb::block!(adc.read(&mut a1)).void_unwrap(), nb::block!(adc.read(&mut a2)).void_unwrap(), nb::block!(adc.read(&mut a3)).void_unwrap(), - nb::block!(adc.read(&mut a4)).void_unwrap(), - nb::block!(adc.read(&mut a5)).void_unwrap(), + nb::block!(adc.read(&mut d4)).void_unwrap(), + nb::block!(adc.read(&mut d8)).void_unwrap(), ]; for (i, v) in values.iter().enumerate() { diff --git a/boards/sparkfun-pro-micro/examples/pro-micro-interrupt.rs b/boards/sparkfun-pro-micro/examples/pro-micro-interrupt.rs index 5e70109312..e13e4916c8 100644 --- a/boards/sparkfun-pro-micro/examples/pro-micro-interrupt.rs +++ b/boards/sparkfun-pro-micro/examples/pro-micro-interrupt.rs @@ -7,7 +7,7 @@ use sparkfun_pro_micro::prelude::*; // This pin will be used from the interrupt handler use sparkfun_pro_micro::hal::port; -static mut PIN: Option> = None; +static mut PIN: Option> = None; #[sparkfun_pro_micro::entry] fn main() -> ! { @@ -18,7 +18,7 @@ fn main() -> ! { let mut led0 = pins.led_rx.into_output(&mut pins.ddr); let mut led1 = pins.led_tx.into_output(&mut pins.ddr); - let mut led = pins.d13.into_output(&mut pins.ddr); + let mut led = pins.d3.into_output(&mut pins.ddr); led0.set_high().void_unwrap(); led1.set_low().void_unwrap(); diff --git a/boards/sparkfun-pro-micro/examples/pro-micro-pwm.rs b/boards/sparkfun-pro-micro/examples/pro-micro-pwm.rs index 52178334fd..b60f5668df 100644 --- a/boards/sparkfun-pro-micro/examples/pro-micro-pwm.rs +++ b/boards/sparkfun-pro-micro/examples/pro-micro-pwm.rs @@ -11,9 +11,9 @@ fn main() -> ! { let mut pins = sparkfun_pro_micro::Pins::new(dp.PORTB, dp.PORTC, dp.PORTD, dp.PORTE, dp.PORTF); - let mut timer4 = pwm::Timer4Pwm::new(dp.TC4, pwm::Prescaler::Prescale64); + let mut timer0 = pwm::Timer0Pwm::new(dp.TC0, pwm::Prescaler::Prescale64); - let mut led = pins.d13.into_output(&mut pins.ddr).into_pwm(&mut timer4); + let mut led = pins.d3.into_output(&mut pins.ddr).into_pwm(&mut timer0); led.set_duty(128); led.enable(); diff --git a/boards/sparkfun-pro-micro/src/pins.rs b/boards/sparkfun-pro-micro/src/pins.rs index 3bc558a78f..99fc8f0844 100644 --- a/boards/sparkfun-pro-micro/src/pins.rs +++ b/boards/sparkfun-pro-micro/src/pins.rs @@ -15,18 +15,6 @@ avr_hal_generic::impl_board_pins! { /// Reexport of the Pro Micro's pins, with the names they have on the board pub struct Pins { - /// `A0` - pub a0: portf::pf7::PF7, - /// `A1` - pub a1: portf::pf6::PF6, - /// `A2` - pub a2: portf::pf5::PF5, - /// `A3` - pub a3: portf::pf4::PF4, - /// `A4` - pub a4: portf::pf1::PF1, - /// `A5` - pub a5: portf::pf0::PF0, /// `D0` / `RX` /// /// * `RX` (UART) @@ -80,22 +68,6 @@ avr_hal_generic::impl_board_pins! { /// * `OC1B`: Output Compare Channel `B` for Timer/Counter1 /// * `OC4B`: Output Compare Channel `B` for Timer/Counter4 (Not implemented) pub d10: portb::pb6::PB6, - /// `D11` - /// - /// * **PWM**: [atmega32u4_hal::timer::Timer0Pwm] - /// * `OC0A`: Output Compare Channel `B` for Timer/Counter0 - /// * `OC1C`: Output Compare Channel `C` for Timer/Counter1 - pub d11: portb::pb7::PB7, - /// `D12` - /// - /// * `#OC4D`: Inverted Output Compare Channel `D` for Timer/Counter4 (Not implemented) - pub d12: portd::pd6::PD6, - /// `D13` / `LED_BUILTIN` - /// - /// * Onboard LED - /// * **PWM**: [atmega32u4_hal::timer::Timer4Pwm] - /// * `OC4A`: Output Compare Channel `A` for Timer/Counter4 - pub d13: portc::pc7::PC7, /// `RX` /// /// Led for indicating inbound data. Also the CS pin. @@ -116,5 +88,21 @@ avr_hal_generic::impl_board_pins! { /// /// ICSP MISO pin pub miso: portb::pb3::PB3, + /// `A0` + /// + /// * `ADC7` channel + pub a0: portf::pf7::PF7, + /// `A1` + /// + /// * `ADC6` channel + pub a1: portf::pf6::PF6, + /// `A2` + /// + /// * `ADC5` channel + pub a2: portf::pf5::PF5, + /// `A3` + /// + /// * `ADC4` channel + pub a3: portf::pf4::PF4, } }