A library for Silicon Sensing DMU02

Dependents:   DMUTest

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers DMU.h Source File

DMU.h

00001 #ifndef DMU_H
00002 #define DMU_H
00003 
00004 
00005 #include "mbed.h"
00006 /** 
00007  * A DMU interface for communicating with the Silicon Sensing DMU02 Dynamics Measurement Unit
00008  *
00009  */
00010 class DMU {
00011 public:
00012  
00013  
00014     /** Creates a DMU interface for using regular mbed pins
00015      *
00016      * @param MOSI        SPI MOSI line
00017      * @param MISO        SPI MISO line
00018      * @param SCLK         SPI SCLK line
00019      * @param S0-S2        Select lines for X, Y and Z axi
00020      *
00021      */
00022     DMU(PinName MOSI, PinName MISO, PinName SCLK, PinName S0, PinName S1, PinName S2); 
00023  
00024  
00025     /** Return the acceleration in the direction of the selected axis
00026      *
00027      * @param axis  The axis you wish to query: x, y or z.
00028      */
00029     float acceleration(char axis);
00030  
00031  
00032     /** Return the roll
00033      *
00034      */
00035     float  roll();    
00036     
00037     
00038     /** Return the pitch
00039      *
00040      */
00041     float  pitch(); 
00042  
00043     /** Return the yaw
00044      *
00045      */
00046     float yaw();
00047 
00048 
00049     /** forces the device to perform the built-in test
00050      *
00051      */    
00052     void test();
00053  
00054  
00055 protected:
00056 
00057     //Device Initialization
00058     void _init();
00059     
00060     //used to set selected axis for query, active low
00061     void _selectAxis(char axis);
00062     
00063     //deselects all axis, inactive high
00064     void _deselectAxis();
00065     
00066     //writes control byte to device, populates data bytes, returns bool of if data was received correctly
00067     bool _write(char controlByte);
00068     
00069     bool _correctChecksumReceived(char statusByte, char chkSum);
00070     
00071       
00072 // Regular mbed pins to drive chip, a SPI bus and S0-S2 which function as slave selects, active low
00073     SPI *_spi;
00074     BusOut *_cs;
00075     
00076 // Received data bytes    
00077     char data0;
00078     char data1;
00079     char data2;
00080     char data3;
00081 
00082     
00083     // Timer used to ensure only 10 Hz total reads
00084     Timer _repClock;       
00085 };
00086 
00087 #endif