This program acquires data from an ADIS16355 IMU via the SPI bus and sends the data to a host computer via UDP over Ethernet.
Dependencies: mbed StrippedDownNetServices
imu-spi.h
- Committer:
- yahugh
- Date:
- 2012-05-31
- Revision:
- 0:79f663186c05
File content as of revision 0:79f663186c05:
// // imu-spi.h // // copyright 2010 Hugh Shane // class ImuSpi { private: const static int dataSize = 7; const static int bufferSize = dataSize+1; // we need to leave room for one junk data int8_t imuRegs[bufferSize]; int16_t buffer[2][bufferSize]; // ping-pong IMU data buffer int8_t pingpong; bool bufferReady; SPI spi; DigitalOut cs; DigitalOut reset; DigitalOut diag; InterruptIn imuDataReady; void InitImu(void); void IMUDataReadyISR(void); int16_t ReadSynch(char); void WriteSynch(char, char); void SendReadCmd(int8_t); void TogglePingpong() {pingpong = (~pingpong) & 0x01;}; int16_t* GetBufferWritePtr() {return &buffer[pingpong][0];}; volatile int imuCmdIndex; volatile int imuReadIndex; Timeout writeTrigger; int16_t* wp; void WriteTriggerTimeoutISR(void); void SSP0ISR(void); static void _ssp0isr(void); int sequenceNumber; InterruptIn onePPS; public: ImuSpi(void); void StartBurstRead(void); int16_t* GetBufferReadPtr() {return buffer[(~pingpong) & 0x01];}; bool IsBufferReady(void); int GetBufferSize(void) {return bufferSize*sizeof(int16_t);}; };