CatPot 2015-2016 / Mbed 2 deprecated CatPot_2v20_T_Main

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Sun May 01 06:30:37 2016 +0000
Revision:
0:b910276f9da2
from 2v10

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lilac0112_1 0:b910276f9da2 1 /**
lilac0112_1 0:b910276f9da2 2 * @author Alexander Entinger, MSc / LXRobotics
lilac0112_1 0:b910276f9da2 3 * @brief this class acts as interface for accessing the adns-9800 sensor - based on https://github.com/mrjohnk/ADNS-9800
lilac0112_1 0:b910276f9da2 4 * @file adns_9800.h
lilac0112_1 0:b910276f9da2 5 */
lilac0112_1 0:b910276f9da2 6
lilac0112_1 0:b910276f9da2 7 #ifndef ADNS_9800_H_
lilac0112_1 0:b910276f9da2 8 #define ADNS_9800_H_
lilac0112_1 0:b910276f9da2 9
lilac0112_1 0:b910276f9da2 10 #include "mbed.h"
lilac0112_1 0:b910276f9da2 11
lilac0112_1 0:b910276f9da2 12 class adns_9800
lilac0112_1 0:b910276f9da2 13 {
lilac0112_1 0:b910276f9da2 14 public:
lilac0112_1 0:b910276f9da2 15 /**
lilac0112_1 0:b910276f9da2 16 * @brief Constructor
lilac0112_1 0:b910276f9da2 17 */
lilac0112_1 0:b910276f9da2 18 adns_9800(PinName mosi, PinName miso, PinName sclk, PinName ncs);
lilac0112_1 0:b910276f9da2 19
lilac0112_1 0:b910276f9da2 20 /**
lilac0112_1 0:b910276f9da2 21 * @brief Destructor
lilac0112_1 0:b910276f9da2 22 */
lilac0112_1 0:b910276f9da2 23 ~adns_9800();
lilac0112_1 0:b910276f9da2 24
lilac0112_1 0:b910276f9da2 25 /**
lilac0112_1 0:b910276f9da2 26 * @brief returns true if a motion has occured since the last readout
lilac0112_1 0:b910276f9da2 27 */
lilac0112_1 0:b910276f9da2 28 bool new_motion_data_available();
lilac0112_1 0:b910276f9da2 29
lilac0112_1 0:b910276f9da2 30 /**
lilac0112_1 0:b910276f9da2 31 * @brief retrieves the latest delta values
lilac0112_1 0:b910276f9da2 32 */
lilac0112_1 0:b910276f9da2 33 void get_delta_x_y(int16_t &delta_x, int16_t &delta_y);
lilac0112_1 0:b910276f9da2 34
lilac0112_1 0:b910276f9da2 35 private:
lilac0112_1 0:b910276f9da2 36 SPI m_spi;
lilac0112_1 0:b910276f9da2 37 DigitalOut m_ncs_pin;
lilac0112_1 0:b910276f9da2 38
lilac0112_1 0:b910276f9da2 39 /**
lilac0112_1 0:b910276f9da2 40 * @brief start and stop communication with the sensor by clearing/setting the ncs pin
lilac0112_1 0:b910276f9da2 41 */
lilac0112_1 0:b910276f9da2 42 void com_begin();
lilac0112_1 0:b910276f9da2 43 void com_end();
lilac0112_1 0:b910276f9da2 44 /**
lilac0112_1 0:b910276f9da2 45 * @brief provide read/write access to a adns register
lilac0112_1 0:b910276f9da2 46 */
lilac0112_1 0:b910276f9da2 47 uint8_t read_reg(uint8_t const address);
lilac0112_1 0:b910276f9da2 48 void write_reg(uint8_t const address, uint8_t const data);
lilac0112_1 0:b910276f9da2 49 /**
lilac0112_1 0:b910276f9da2 50 * @brief upload the firmware
lilac0112_1 0:b910276f9da2 51 */
lilac0112_1 0:b910276f9da2 52 void upload_firmware();
lilac0112_1 0:b910276f9da2 53 /**
lilac0112_1 0:b910276f9da2 54 * @brief starts the sensor up
lilac0112_1 0:b910276f9da2 55 */
lilac0112_1 0:b910276f9da2 56 void startup();
lilac0112_1 0:b910276f9da2 57 };
lilac0112_1 0:b910276f9da2 58
lilac0112_1 0:b910276f9da2 59 #endif