this class is meant to deal with the Freescale MMA7455L accelermoter through an SPI interface. it has limtid functionality, but it can be extended to contain more features
MMA7455L_SPI.h
- Committer:
- hassan_ali
- Date:
- 2012-02-05
- Revision:
- 0:0d4a1401a9c5
File content as of revision 0:0d4a1401a9c5:
/*This class is meant to interface the MMA7455L digital acceleromter with the mbed micro through a SPI interface. This class deals mainly with acquiring measurment from the acceleromter, but doesn't deal with pulse detection or interrupts, so it needs to be extended*/ #ifndef MMA7455L_SPI_H #define MMA7455L_SPI_H #include "mbed.h" /*declaration of the registers of the MMA7455L accelermoter*/ #define X_OUT 0x06 #define Y_OUT 0x07 #define Z_OUT 0x08 #define STATUS 0x09 #define DETECTION_SOURCE_REGISTER 0x0A #define X_OFF_LSB 0x10 #define X_OFF_MSB 0x11 #define Y_OFF_LSB 0x12 #define Y_OFF_MSB 0x13 #define Z_OFF_LSB 0x14 #define Z_OFF_MSB 0x15 #define MODE_CONTROL 0x16 #define INTERRUPT_LATCH_RESET 0x17 #define CONTROL_1 0x18 #define CONTROL_2 0x19 #define LEVEL_DETECTION_THRESHOLD_LIMIT 0x1A #define PULSE_DETECTION_THRESHOLD_LIMIT 0x1B #define PULSE_DURATION_VALUE 0x1C #define LATENCY_TIME_VALUE 0x1D /*some useful charechters for writing, reading and checking readiness of data*/ #define READ 0x00 #define WRITE 0x80 #define DATA_READY 0x01 class MMA7455L_SPI{ public: float Ax,Ay,Az; MMA7455L_SPI(PinName, PinName, PinName, PinName); /*mosi, miso, clk and cs*/ void update_acceleration(); void set_range_of_measurment(int GS1, int GS0); /*this function takes two bits, zeros ones and they are used to determine the required char to be sent to the mode control register*/ //void set_mode_of_operation(int LSB1, int LSB2); private: int sensetivity; DigitalOut _CS; SPI _spi; /*we declare some basic functions for reading data from accelermoter and writing to the accelermoter**/ signed char read(char adress); void write(char adress, char content); /*some basic functions that take a char that controls mode of operation and behaviour of the accelermoter*/ void set_mode(char); void set_interrupt_latch_reset_time(char value = 0x03); void set_offsets(char, char, char); void set_control_1(char value = 0x00); void set_control_2(char value = 0x00); void set_level_detection_thershold_limit_value(char value = 0x2F); void set_pulse_detection_thershold_limit_value(char value = 0x2F); void set_pulse_duration_value(char value = 0x2F); void set_latency_time_value(char value =0x2F); /*some auxillary functions that describes its status*/ signed char status(); }; #endif