ryosuke yumoto
/
ADNS3080_HelloWorld
I don't finish configuring this program.
ADNS3080.h@1:46abb3b9347d, 2014-08-08 (annotated)
- Committer:
- ryosuke
- Date:
- Fri Aug 08 06:36:15 2014 +0000
- Revision:
- 1:46abb3b9347d
- Parent:
- 0:9beaad87014d
this program is a test program of ADNS 3080 optical flow sensor. this optical flow sensor board is developed by 3DRobotics.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryosuke | 1:46abb3b9347d | 1 | /* |
ryosuke | 1:46abb3b9347d | 2 | *author Ryosuke Yumoto |
ryosuke | 1:46abb3b9347d | 3 | */ |
ryosuke | 0:9beaad87014d | 4 | #ifndef ADNS3080_H |
ryosuke | 0:9beaad87014d | 5 | #define ADNS3080_H |
ryosuke | 0:9beaad87014d | 6 | |
ryosuke | 0:9beaad87014d | 7 | #include "mbed.h" |
ryosuke | 0:9beaad87014d | 8 | |
ryosuke | 0:9beaad87014d | 9 | //Register map |
ryosuke | 0:9beaad87014d | 10 | #define ADNS3080_PRODUCT_ID 0x00 |
ryosuke | 0:9beaad87014d | 11 | #define ADNS3080_REVISION_ID 0x01 |
ryosuke | 0:9beaad87014d | 12 | #define ADNS3080_MOTION 0x02 |
ryosuke | 0:9beaad87014d | 13 | #define ADNS3080_DELTA_X 0x03 |
ryosuke | 0:9beaad87014d | 14 | #define ADNS3080_DELTA_Y 0x04 |
ryosuke | 0:9beaad87014d | 15 | #define ADNS3080_SQUAL 0x05 |
ryosuke | 0:9beaad87014d | 16 | #define ADNS3080_PIXEL_SUM 0x06 |
ryosuke | 0:9beaad87014d | 17 | #define ADNS3080_MAXIMUM_PIXEL 0x07 |
ryosuke | 0:9beaad87014d | 18 | #define ADNS3080_CONFIGURATION_BITS 0x0a |
ryosuke | 0:9beaad87014d | 19 | #define ADNS3080_EXTENDED_CONFIG 0x0b |
ryosuke | 0:9beaad87014d | 20 | #define ADNS3080_DATA_OUT_LOWER 0x0c |
ryosuke | 0:9beaad87014d | 21 | #define ADNS3080_DATA_OUT_UPPER 0x0d |
ryosuke | 0:9beaad87014d | 22 | #define ADNS3080_SHUTTER_LOWER 0x0e |
ryosuke | 0:9beaad87014d | 23 | #define ADNS3080_SHUTTER_UPPER 0x0f |
ryosuke | 0:9beaad87014d | 24 | #define ADNS3080_FRAME_PERIOD_LOWER 0x10 |
ryosuke | 0:9beaad87014d | 25 | #define ADNS3080_FRAME_PERIOD_UPPER 0x11 |
ryosuke | 0:9beaad87014d | 26 | #define ADNS3080_MOTION_CLEAR 0x12 |
ryosuke | 0:9beaad87014d | 27 | #define ADNS3080_FRAME_CAPTURE 0x13 |
ryosuke | 0:9beaad87014d | 28 | #define ADNS3080_SROM_ENABLE 0x14 |
ryosuke | 0:9beaad87014d | 29 | #define ADNS3080_FRAME_PERIOD_MAX_BOUND_LOWER 0x19 |
ryosuke | 0:9beaad87014d | 30 | #define ADNS3080_FRAME_PERIOD_MAX_BOUND_UPPER 0x1a |
ryosuke | 0:9beaad87014d | 31 | #define ADNS3080_FRAME_PERIOD_MIN_BOUND_LOWER 0x1b |
ryosuke | 0:9beaad87014d | 32 | #define ADNS3080_FRAME_PERIOD_MIN_BOUND_UPPER 0x1c |
ryosuke | 0:9beaad87014d | 33 | #define ADNS3080_SHUTTER_MAX_BOUND_LOWER 0x1d |
ryosuke | 0:9beaad87014d | 34 | #define ADNS3080_SHUTTER_MAX_BOUND_UPPER 0x1e |
ryosuke | 0:9beaad87014d | 35 | #define ADNS3080_SROM_ID 0x1f |
ryosuke | 0:9beaad87014d | 36 | #define ADNS3080_OBSERVATION 0x3d |
ryosuke | 0:9beaad87014d | 37 | #define ADNS3080_INVERSE_PRODUCT_ID 0x3f |
ryosuke | 0:9beaad87014d | 38 | #define ADNS3080_PIXEL_BURST 0x40 |
ryosuke | 0:9beaad87014d | 39 | #define ADNS3080_MOTION_BURST 0x50 |
ryosuke | 0:9beaad87014d | 40 | #define ADNS3080_SROM_LOAD 0x60 |
ryosuke | 0:9beaad87014d | 41 | |
ryosuke | 0:9beaad87014d | 42 | #define ADNS3080_SPI_READ 0x00 |
ryosuke | 0:9beaad87014d | 43 | #define ADNS3080_SPI_WRITE 0x80 |
ryosuke | 0:9beaad87014d | 44 | |
ryosuke | 0:9beaad87014d | 45 | |
ryosuke | 0:9beaad87014d | 46 | |
ryosuke | 0:9beaad87014d | 47 | class ADNS3080{ |
ryosuke | 0:9beaad87014d | 48 | public: |
ryosuke | 0:9beaad87014d | 49 | |
ryosuke | 0:9beaad87014d | 50 | ADNS3080(PinName mosi, PinName miso, PinName sck, PinName cs); |
ryosuke | 0:9beaad87014d | 51 | |
ryosuke | 0:9beaad87014d | 52 | int getProdID(void); |
ryosuke | 0:9beaad87014d | 53 | int getRevID(void); |
ryosuke | 0:9beaad87014d | 54 | int getMotion(void); |
ryosuke | 0:9beaad87014d | 55 | signed char getDelta_X(void); |
ryosuke | 0:9beaad87014d | 56 | signed char getDelta_Y(void); |
ryosuke | 1:46abb3b9347d | 57 | unsigned int getSQUAL(void); |
ryosuke | 1:46abb3b9347d | 58 | unsigned short getPixel_sum(void); |
ryosuke | 1:46abb3b9347d | 59 | char getMax_Pixel(void); |
ryosuke | 1:46abb3b9347d | 60 | int getConfiguration_bits(void); |
ryosuke | 1:46abb3b9347d | 61 | void setConfiguration_bits(char configuration); |
ryosuke | 1:46abb3b9347d | 62 | int getExtended_config(void); |
ryosuke | 1:46abb3b9347d | 63 | void setExtended_config(char extended_config); |
ryosuke | 1:46abb3b9347d | 64 | /* |
ryosuke | 1:46abb3b9347d | 65 | short getData_Out(void); |
ryosuke | 1:46abb3b9347d | 66 | unsigned int getShutter(void); |
ryosuke | 1:46abb3b9347d | 67 | unsigned int getFrame_Period(void); |
ryosuke | 1:46abb3b9347d | 68 | void Motion_Clear(void); |
ryosuke | 1:46abb3b9347d | 69 | */ |
ryosuke | 1:46abb3b9347d | 70 | |
ryosuke | 0:9beaad87014d | 71 | int getInverProdID(void); |
ryosuke | 0:9beaad87014d | 72 | |
ryosuke | 0:9beaad87014d | 73 | private: |
ryosuke | 0:9beaad87014d | 74 | |
ryosuke | 0:9beaad87014d | 75 | SPI spi_; |
ryosuke | 0:9beaad87014d | 76 | DigitalOut nCS_; |
ryosuke | 0:9beaad87014d | 77 | |
ryosuke | 0:9beaad87014d | 78 | int ReadRegister(int address); |
ryosuke | 0:9beaad87014d | 79 | |
ryosuke | 0:9beaad87014d | 80 | void WriteRegister(int address, char data); |
ryosuke | 0:9beaad87014d | 81 | }; |
ryosuke | 0:9beaad87014d | 82 | |
ryosuke | 0:9beaad87014d | 83 | #endif |