Ryan Vasquez / AD7989_Driver
Committer:
rvasquez6089
Date:
Mon Jan 21 17:27:10 2019 +0000
Revision:
1:582476614d9d
Parent:
0:64eaedfa13a2
Child:
2:60f5474814ac
Added example and class documentation.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rvasquez6089 0:64eaedfa13a2 1 #ifndef AD7989_H
rvasquez6089 0:64eaedfa13a2 2 #define AD7989_H
rvasquez6089 0:64eaedfa13a2 3
rvasquez6089 0:64eaedfa13a2 4 #include "mbed-os/mbed.h"
rvasquez6089 1:582476614d9d 5 /** An abstraction for an 18 bit ADC
rvasquez6089 1:582476614d9d 6 * @note Not quite sure this is thread or interrupt safe. Treat this as a standard mbed SPI object
rvasquez6089 1:582476614d9d 7 * There are mutex locks when the SPI bus is being used.
rvasquez6089 1:582476614d9d 8 * Example
rvasquez6089 1:582476614d9d 9 * @code
rvasquez6089 1:582476614d9d 10 * #include "mbed.h"
rvasquez6089 1:582476614d9d 11 * #include "AD7989_Driver.h"
rvasquez6089 1:582476614d9d 12 *
rvasquez6089 1:582476614d9d 13 * SPI spi(p5, p6, p7); // mosi, miso, sclk
rvasquez6089 1:582476614d9d 14 * DigitalOut cs(p8);
rvasquez6089 1:582476614d9d 15 * Digitalout convert(p9);
rvasquez6089 1:582476614d9d 16 * AD7989_Driver ADCDEV(&spi, &cs, &convert);
rvasquez6089 1:582476614d9d 17 * double voltage;
rvasquez6089 1:582476614d9d 18 * int main()
rvasquez6089 1:582476614d9d 19 * {
rvasquez6089 1:582476614d9d 20 * while(1)
rvasquez6089 1:582476614d9d 21 * {
rvasquez6089 1:582476614d9d 22 * voltage = ADCDEV.sample();
rvasquez6089 1:582476614d9d 23 * printf("Voltage = %f Volts", voltage);
rvasquez6089 1:582476614d9d 24 * }
rvasquez6089 1:582476614d9d 25 * }
rvasquez6089 1:582476614d9d 26 */
rvasquez6089 0:64eaedfa13a2 27 class AD7989_Driver
rvasquez6089 0:64eaedfa13a2 28 {
rvasquez6089 0:64eaedfa13a2 29 public:
rvasquez6089 0:64eaedfa13a2 30 /** Constructor for AD7989_Drive object
rvasquez6089 0:64eaedfa13a2 31 *
rvasquez6089 0:64eaedfa13a2 32 * @param SPI_BUS this is the SPI bus the AD7989 is one
rvasquez6089 0:64eaedfa13a2 33 * @param Chip_Select this is the DigitalOut outline connected to CS pin
rvasquez6089 0:64eaedfa13a2 34 * @param Convert this is the DigitalOut pin that is connected to the CONV pin
rvasquez6089 0:64eaedfa13a2 35 */
rvasquez6089 0:64eaedfa13a2 36 AD7989_Driver(SPI *SPI_BUS, DigitalOut *Chip_Select, DigitalOut *Convert);
rvasquez6089 0:64eaedfa13a2 37 /** Function returns the voltage on the AD7989 as a double
rvasquez6089 0:64eaedfa13a2 38 * The value the function will return will be from -5.0V to 5.0V
rvasquez6089 0:64eaedfa13a2 39 */
rvasquez6089 0:64eaedfa13a2 40 double sample();
rvasquez6089 0:64eaedfa13a2 41 /** averages a number of samples the use specifies
rvasquez6089 0:64eaedfa13a2 42 *
rvasquez6089 0:64eaedfa13a2 43 * @param num_avgs The number of samples to average
rvasquez6089 0:64eaedfa13a2 44 */
rvasquez6089 0:64eaedfa13a2 45 double sample_avg(int num_avgs);
rvasquez6089 0:64eaedfa13a2 46
rvasquez6089 0:64eaedfa13a2 47 float volts;
rvasquez6089 0:64eaedfa13a2 48 private:
rvasquez6089 0:64eaedfa13a2 49 static const float zero_point;
rvasquez6089 0:64eaedfa13a2 50 SPI *ADC_SPI;
rvasquez6089 0:64eaedfa13a2 51 DigitalOut *CS;
rvasquez6089 0:64eaedfa13a2 52 DigitalOut *ADC_CONV;
rvasquez6089 0:64eaedfa13a2 53 };
rvasquez6089 0:64eaedfa13a2 54
rvasquez6089 0:64eaedfa13a2 55 #endif