diff --git a/examples/pmw3389.rs b/examples/pmw3389.rs index b1d0c3f3bc0d8c08e31329977954fc194f295874..067ba85d482306c8a7b3d945b7ac9faa86887d6b 100644 --- a/examples/pmw3389.rs +++ b/examples/pmw3389.rs @@ -7,7 +7,7 @@ use cortex_m::{ iprintln, peripheral::{itm::Stim, DWT}, }; -use embedded_hal::spi::MODE_0; +use embedded_hal::spi::{MODE_0, MODE_1, MODE_2, MODE_3}; // use cortex_m_semihosting::hprintln; use panic_halt as _; use rtic::cyccnt::{Instant, U32Ext as _}; @@ -83,8 +83,8 @@ const APP: () = { // polarity: Polarity::IdleLow, // phase: Phase::CaptureOnFirstTransition, // }, - MODE_0, - stm32f4xx_hal::time::KiloHertz(2000).into(), + MODE_3, + stm32f4xx_hal::time::KiloHertz(100).into(), clocks, ); @@ -94,6 +94,32 @@ const APP: () = { let id = pmw3389.product_id().unwrap(); iprintln!(stim, "id {}", id); + let id = pmw3389.product_id().unwrap(); + iprintln!(stim, "id {}", id); + + let id = pmw3389 + .read_register(pmw3389::Register::RevisionId) + .unwrap(); + iprintln!(stim, "rev {}", id); + + let id = pmw3389 + .read_register(pmw3389::Register::ShutterLower) + .unwrap(); + iprintln!(stim, "lower {}", id); + + let id = pmw3389 + .read_register(pmw3389::Register::ShutterUpper) + .unwrap(); + iprintln!(stim, "upper {}", id); + + let id = pmw3389.read_register(pmw3389::Register::SROMId).unwrap(); + iprintln!(stim, "sromid {}", id); + + let id = pmw3389 + .read_register(pmw3389::Register::InverseProductID) + .unwrap(); + iprintln!(stim, "-id {}", id); + // semantically, the monotonic timer is frozen at time "zero" during `init` // NOTE do *not* call `Instant::now` in this context; it will return a nonsense value // let now = cx.start; // the start time of the system @@ -312,10 +338,10 @@ mod pmw3389 { // self.change_config(Register::CTRL_REG4, scale) // } - fn read_register(&mut self, reg: Register) -> Result<u8, E> { + pub fn read_register(&mut self, reg: Register) -> Result<u8, E> { let _ = self.cs.set_low(); - let mut buffer = [reg.addr() | SINGLE | READ, 0]; + let mut buffer = [reg.addr() & 0x7f, 0]; self.spi.transfer(&mut buffer)?; let _ = self.cs.set_high();