Code for our FYDP -only one IMU works right now -RTOS is working

Dependencies:   mbed

Committer:
majik
Date:
Wed Mar 18 22:23:48 2015 +0000
Revision:
0:964eb6a2ef00
This is our FYDP code, but only one IMU works with the RTOS.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
majik 0:964eb6a2ef00 1 #include "ADNS5090.h"
majik 0:964eb6a2ef00 2
majik 0:964eb6a2ef00 3 ADNS5090::ADNS5090(PinName mosi_pin, PinName miso_pin, PinName sclk_pin, PinName ncs_pin, float pxPerMM_) :
majik 0:964eb6a2ef00 4 spi(mosi_pin, miso_pin, sclk_pin),
majik 0:964eb6a2ef00 5 ncs(ncs_pin),
majik 0:964eb6a2ef00 6 dx_px(0), dy_px(0),
majik 0:964eb6a2ef00 7 pxPerMM(pxPerMM_)
majik 0:964eb6a2ef00 8 {
majik 0:964eb6a2ef00 9 ncs = 1;
majik 0:964eb6a2ef00 10 spi.format(8,3);
majik 0:964eb6a2ef00 11 spi.frequency(1000000);
majik 0:964eb6a2ef00 12 reset();
majik 0:964eb6a2ef00 13 }
majik 0:964eb6a2ef00 14
majik 0:964eb6a2ef00 15
majik 0:964eb6a2ef00 16 bool ADNS5090::updateMotion()
majik 0:964eb6a2ef00 17 {
majik 0:964eb6a2ef00 18 bool ret = false;
majik 0:964eb6a2ef00 19 dx_px = 0;
majik 0:964eb6a2ef00 20 dy_px = 0;
majik 0:964eb6a2ef00 21
majik 0:964eb6a2ef00 22 ncs = 0;
majik 0:964eb6a2ef00 23 spi.write(ADNS5090_MOTION_ST_REG);
majik 0:964eb6a2ef00 24
majik 0:964eb6a2ef00 25 if(0x80 & spi.write(0))
majik 0:964eb6a2ef00 26 {
majik 0:964eb6a2ef00 27 spi.write(ADNS5090_MOTION_BURST_REG);
majik 0:964eb6a2ef00 28 dx_px = (int8_t)spi.write(0);
majik 0:964eb6a2ef00 29 dy_px = (int8_t)spi.write(0);
majik 0:964eb6a2ef00 30 sq = (uint8_t)spi.write(0);
majik 0:964eb6a2ef00 31 ret = true;
majik 0:964eb6a2ef00 32 }
majik 0:964eb6a2ef00 33 ncs = 1;
majik 0:964eb6a2ef00 34 return ret;
majik 0:964eb6a2ef00 35 }
majik 0:964eb6a2ef00 36
majik 0:964eb6a2ef00 37 float ADNS5090::dx()
majik 0:964eb6a2ef00 38 {
majik 0:964eb6a2ef00 39 return dx_px/pxPerMM;
majik 0:964eb6a2ef00 40 }
majik 0:964eb6a2ef00 41
majik 0:964eb6a2ef00 42 float ADNS5090::dy()
majik 0:964eb6a2ef00 43 {
majik 0:964eb6a2ef00 44 return dy_px/pxPerMM;
majik 0:964eb6a2ef00 45 }
majik 0:964eb6a2ef00 46
majik 0:964eb6a2ef00 47 void ADNS5090::reset()
majik 0:964eb6a2ef00 48 {
majik 0:964eb6a2ef00 49 ncs = 0;
majik 0:964eb6a2ef00 50 spi.write(ADNS5090_WRITE_VAL |
majik 0:964eb6a2ef00 51 ADNS5090_RESET_REG);
majik 0:964eb6a2ef00 52 spi.write(ADNS5090_RESET_VAL);
majik 0:964eb6a2ef00 53 ncs = 1;
majik 0:964eb6a2ef00 54 }
majik 0:964eb6a2ef00 55
majik 0:964eb6a2ef00 56 void ADNS5090::powerDown()
majik 0:964eb6a2ef00 57 {
majik 0:964eb6a2ef00 58 ncs = 0;
majik 0:964eb6a2ef00 59 spi.write(ADNS5090_WRITE_VAL |
majik 0:964eb6a2ef00 60 ADNS5090_MOUSE_CTRL_REG);
majik 0:964eb6a2ef00 61 spi.write(ADNS5090_POWERDOWN_VAL);
majik 0:964eb6a2ef00 62 ncs = 1;
majik 0:964eb6a2ef00 63 }
majik 0:964eb6a2ef00 64
majik 0:964eb6a2ef00 65 void ADNS5090::setDPI()
majik 0:964eb6a2ef00 66 {
majik 0:964eb6a2ef00 67 ncs = 0;
majik 0:964eb6a2ef00 68 spi.write(ADNS5090_WRITE_VAL|
majik 0:964eb6a2ef00 69 ADNS5090_MOUSE_CTRL_REG);
majik 0:964eb6a2ef00 70 spi.write(0x24);
majik 0:964eb6a2ef00 71 ncs = 1;
majik 0:964eb6a2ef00 72
majik 0:964eb6a2ef00 73 ncs = 0;
majik 0:964eb6a2ef00 74 spi.write(ADNS5090_WRITE_VAL|
majik 0:964eb6a2ef00 75 0x21);
majik 0:964eb6a2ef00 76 spi.write(0x10);
majik 0:964eb6a2ef00 77 ncs = 1;
majik 0:964eb6a2ef00 78 }