A compilation of some hardware sensors and their shared programming interfaces.

ADCSensor.cpp

Committer:
mgottscho
Date:
2014-03-19
Revision:
1:15396cab58d1
Parent:
0:8d34cc2ff388

File content as of revision 1:15396cab58d1:

/* ADCSensor.cpp
 * Tested with mbed board: FRDM-KL46Z
 * Author: Mark Gottscho
 * mgottscho@ucla.edu
 */

#include "mbed.h"
#include "ADCSensor.h"
#include "PeriodicSensor.h"

ADCSensor::ADCSensor(PinName adc_pin) :
                    PeriodicSensor(0.005), //default max sampling rate of 200Hz
                    __adc(adc_pin),
                    __data(0)
                    {
}

ADCSensor::~ADCSensor() { }

uint16_t ADCSensor::getSample(bool sampleNow) {
    __disable_irq();
    if (sampleNow) {
        __data = __adc.read_u16();
    }
    
    __dataReady = false;
    __enable_irq();
    
    return __data;   
}

float ADCSensor::getSampleFloat(bool sampleNow) {
    return getSample(sampleNow) * ADC_DIV;   
}

void ADCSensor::__sample_data_ISR() {
    getSample(true);
    __dataReady = true;
}