Test of ADNS3080 on DISCO_F429ZI
Dependencies: BSP_DISCO_F429ZI LCD_DISCO_F429ZI mbed
Fork of ADNS3080_HelloWorld by
ADNS3080.cpp@0:9beaad87014d, 2014-05-08 (annotated)
- Committer:
- ryosuke
- Date:
- Thu May 08 12:59:25 2014 +0000
- Revision:
- 0:9beaad87014d
- Child:
- 1:46abb3b9347d
This program is test program for ADNS3080 Optical Flow sensor.; But, I do not finish configuring this program.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryosuke | 0:9beaad87014d | 1 | #include "ADNS3080.h" |
ryosuke | 0:9beaad87014d | 2 | |
ryosuke | 0:9beaad87014d | 3 | ADNS3080::ADNS3080(PinName mosi, |
ryosuke | 0:9beaad87014d | 4 | PinName miso, |
ryosuke | 0:9beaad87014d | 5 | PinName sck, |
ryosuke | 0:9beaad87014d | 6 | PinName cs) : spi_(mosi, miso, sck), nCS_(cs){ |
ryosuke | 0:9beaad87014d | 7 | |
ryosuke | 0:9beaad87014d | 8 | spi_.frequency(2000000); |
ryosuke | 0:9beaad87014d | 9 | spi_.format(8, 3); |
ryosuke | 0:9beaad87014d | 10 | |
ryosuke | 0:9beaad87014d | 11 | nCS_=1; |
ryosuke | 0:9beaad87014d | 12 | |
ryosuke | 0:9beaad87014d | 13 | wait_us(500); |
ryosuke | 0:9beaad87014d | 14 | |
ryosuke | 0:9beaad87014d | 15 | } |
ryosuke | 0:9beaad87014d | 16 | |
ryosuke | 0:9beaad87014d | 17 | int ADNS3080::getProdID(void) { |
ryosuke | 0:9beaad87014d | 18 | |
ryosuke | 0:9beaad87014d | 19 | return ReadRegister(ADNS3080_PRODUCT_ID); |
ryosuke | 0:9beaad87014d | 20 | |
ryosuke | 0:9beaad87014d | 21 | } |
ryosuke | 0:9beaad87014d | 22 | |
ryosuke | 0:9beaad87014d | 23 | int ADNS3080::getRevID(void) { |
ryosuke | 0:9beaad87014d | 24 | |
ryosuke | 0:9beaad87014d | 25 | return ReadRegister(ADNS3080_REVISION_ID); |
ryosuke | 0:9beaad87014d | 26 | |
ryosuke | 0:9beaad87014d | 27 | } |
ryosuke | 0:9beaad87014d | 28 | |
ryosuke | 0:9beaad87014d | 29 | int ADNS3080::getMotion(void) { |
ryosuke | 0:9beaad87014d | 30 | |
ryosuke | 0:9beaad87014d | 31 | return ReadRegister(ADNS3080_MOTION); |
ryosuke | 0:9beaad87014d | 32 | |
ryosuke | 0:9beaad87014d | 33 | } |
ryosuke | 0:9beaad87014d | 34 | |
ryosuke | 0:9beaad87014d | 35 | signed char ADNS3080::getDelta_X(void) { |
ryosuke | 0:9beaad87014d | 36 | |
ryosuke | 0:9beaad87014d | 37 | return ReadRegister(ADNS3080_DELTA_X); |
ryosuke | 0:9beaad87014d | 38 | |
ryosuke | 0:9beaad87014d | 39 | } |
ryosuke | 0:9beaad87014d | 40 | |
ryosuke | 0:9beaad87014d | 41 | signed char ADNS3080::getDelta_Y(void) { |
ryosuke | 0:9beaad87014d | 42 | |
ryosuke | 0:9beaad87014d | 43 | return ReadRegister(ADNS3080_DELTA_Y); |
ryosuke | 0:9beaad87014d | 44 | |
ryosuke | 0:9beaad87014d | 45 | } |
ryosuke | 0:9beaad87014d | 46 | |
ryosuke | 0:9beaad87014d | 47 | int ADNS3080::getInverProdID(void) { |
ryosuke | 0:9beaad87014d | 48 | |
ryosuke | 0:9beaad87014d | 49 | return ReadRegister(ADNS3080_INVERSE_PRODUCT_ID); |
ryosuke | 0:9beaad87014d | 50 | |
ryosuke | 0:9beaad87014d | 51 | } |
ryosuke | 0:9beaad87014d | 52 | |
ryosuke | 0:9beaad87014d | 53 | int ADNS3080::ReadRegister(int address) { |
ryosuke | 0:9beaad87014d | 54 | |
ryosuke | 0:9beaad87014d | 55 | int tx = (ADNS3080_SPI_READ | address); |
ryosuke | 0:9beaad87014d | 56 | int rx = 0; |
ryosuke | 0:9beaad87014d | 57 | |
ryosuke | 0:9beaad87014d | 58 | nCS_=0; |
ryosuke | 0:9beaad87014d | 59 | |
ryosuke | 0:9beaad87014d | 60 | spi_.write(tx); |
ryosuke | 0:9beaad87014d | 61 | wait_us(50); |
ryosuke | 0:9beaad87014d | 62 | rx = spi_.write(0x00); |
ryosuke | 0:9beaad87014d | 63 | nCS_ = 1; |
ryosuke | 0:9beaad87014d | 64 | |
ryosuke | 0:9beaad87014d | 65 | return rx; |
ryosuke | 0:9beaad87014d | 66 | } |
ryosuke | 0:9beaad87014d | 67 | |
ryosuke | 0:9beaad87014d | 68 | void ADNS3080::WriteRegister(int address, char data) { |
ryosuke | 0:9beaad87014d | 69 | |
ryosuke | 0:9beaad87014d | 70 | int tx = ( ADNS3080_SPI_WRITE | address); |
ryosuke | 0:9beaad87014d | 71 | |
ryosuke | 0:9beaad87014d | 72 | nCS_=0; |
ryosuke | 0:9beaad87014d | 73 | spi_.write(tx); |
ryosuke | 0:9beaad87014d | 74 | spi_.write(data); |
ryosuke | 0:9beaad87014d | 75 | |
ryosuke | 0:9beaad87014d | 76 | nCS_=1; |
ryosuke | 0:9beaad87014d | 77 | |
ryosuke | 0:9beaad87014d | 78 | } |