From 9aad996b04c0c476a61258ff53498ea1184827a2 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 17 Aug 2019 10:57:59 -0400 Subject: [PATCH] PMW3901 add register write delay (TIME_us_TSWW) --- src/drivers/optical_flow/pmw3901/PMW3901.cpp | 5 +++++ src/drivers/optical_flow/pmw3901/PMW3901.hpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/drivers/optical_flow/pmw3901/PMW3901.cpp b/src/drivers/optical_flow/pmw3901/PMW3901.cpp index 5c91a4f175..eca9a6d16e 100644 --- a/src/drivers/optical_flow/pmw3901/PMW3901.cpp +++ b/src/drivers/optical_flow/pmw3901/PMW3901.cpp @@ -33,6 +33,8 @@ #include "PMW3901.hpp" +static constexpr uint32_t TIME_us_TSWW = 11; // - actually 10.5us + PMW3901::PMW3901(int bus, enum Rotation yaw_rotation) : SPI("PMW3901", PMW3901_DEVICE_PATH, bus, PMW3901_SPIDEV, SPIDEV_MODE0, PMW3901_SPI_BUS_SPEED), ScheduledWorkItem(px4::device_bus_to_wq(get_device_id())), @@ -71,6 +73,7 @@ PMW3901::sensorInit() usleep(1000); // set performance optimization registers + // from PixArt PMW3901MB Optical Motion Tracking chip demo kit V3.20 (21 Aug 2018) unsigned char v = 0; unsigned char c1 = 0; unsigned char c2 = 0; @@ -287,6 +290,8 @@ PMW3901::writeRegister(unsigned reg, uint8_t data) return ret; } + px4_usleep(TIME_us_TSWW); + return ret; } diff --git a/src/drivers/optical_flow/pmw3901/PMW3901.hpp b/src/drivers/optical_flow/pmw3901/PMW3901.hpp index fea69cf9bf..b55dddf437 100644 --- a/src/drivers/optical_flow/pmw3901/PMW3901.hpp +++ b/src/drivers/optical_flow/pmw3901/PMW3901.hpp @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include #include