Device driver
Adis16488.h
- Committer:
- sam_grove
- Date:
- 2013-04-27
- Revision:
- 2:e2e5e40668bf
- Parent:
- 0:e9a81060a092
File content as of revision 2:e2e5e40668bf:
/** * @file Adis16488.h * @brief Device driver - ADIS16488 IMU * @author sam grove * @version 1.0 * @see http://www.analog.com/static/imported-files/data_sheets/ADIS16488.pdf * * Copyright (c) 2013 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ADIS16488_H #define ADIS16488_H #include "LogUtil.h" #include "mbed.h" /** Using the Analog Devices ADIS16488/PCBZ * * Example: * @code * #include "mbed.h" * * int main() * { * } * @endcode */ /** * @class Adis16488 * @brief API abstraction for the ADIS16488 IMU */ class Adis16488 { public: struct{ uint16_t data[6]; } gyro, accel, magn, deltang, deltvel; /** Create the Adis16488 object * @param spi - A defined SPI object * @param cs - A defined DigitalOut object * @param rst - A defined DigitalOut object * @param dr - A defined InterruptIn object */ Adis16488(SPI &spi, DigitalOut &cs, DigitalOut &rst, InterruptIn &dr); /** Clear state vars and initilize the dependant objects */ void init(void); /** Read from a register (exposed for debugging reasons) * @param reg - The register to be written * @param data - Data read from the device is stored here */ void readRegister(uint16_t const reg, uint16_t &data); /** Write to a register (exposed for debugging reasons) * @param reg - The register to be written */ void writeRegister(uint16_t const reg); /** Allow the IC to run and collect user input */ void enable(void); /** Stop the IC and put into low power mode */ void disable(void); private: SPI *_spi; DigitalOut *_cs; DigitalOut *_rst; InterruptIn *_dr; void drHandler(void); }; #endif