WISP ERT (Client)  1.0.0
The WISP Extended Runtime (WISP side)
adc.c File Reference

ADC module for using the ADC12_B peripheral. More...

#include "adc.h"
#include "../globals.h"

Functions

void ADC_init (void)
 
void ADC_initCustom (ADC_referenceSelect reference, ADC_precisionSelect precision, ADC_inputSelect channel)
 
uint16_t ADC_read (void)
 
void ADC_asyncRead (void(*callback)(uint16_t))
 
uint16_t ADC_critRead (void)
 
__interrupt void INT_ADC12 (void)
 
uint16_t ADC_rawCorrection (uint16_t raw)
 
uint16_t ADC_rawToVoltage (uint16_t raw)
 
int16_t ADC_rawToTemperature (uint16_t raw)
 
uint8_t ADC_isBusy (void)
 
uint8_t ADC_isReady (void)
 
void ADC_enable (void)
 
void ADC_disable (void)
 
void ADC_enableConversion (void)
 
void ADC_disableConversion (void)
 
void ADC_enableInterrupts (void)
 
void ADC_disableInterrupts (void)
 
void ADC_setReference (ADC_referenceSelect reference)
 
ADC_referenceSelect ADC_getReference (void)
 
void ADC_setPrecision (ADC_precisionSelect precision)
 
ADC_precisionSelect ADC_getPrecision (void)
 
void ADC_setInputChannel (ADC_inputSelect channel)
 
ADC_inputSelect ADC_getInputChannel (void)
 
void ADC_setSampleHold (void)
 

Variables

struct {
   uint16_t   lastValue
 
   ADC_referenceSelect   reference
 
   ADC_precisionSelect   precision
 
   ADC_inputSelect   channel
 
   void(*   read_callback )(uint16_t)
 
ADC_SM
 

Detailed Description

ADC module for using the ADC12_B peripheral.

Author
Ivar in 't Veen

Function Documentation

◆ ADC_asyncRead()

void ADC_asyncRead ( void(*)(uint16_t)  callback)

Asynchronously read ADC. Do not block, call callback when done.

Parameters
callbackfunction to be called after conversion finishes

◆ ADC_critRead()

uint16_t ADC_critRead ( void  )

Critical ADC read. Does block, does not use interrupts.

◆ ADC_disable()

void ADC_disable ( void  )

Disable the ADC12_B peripheral.

◆ ADC_disableConversion()

void ADC_disableConversion ( void  )

Disable ADC conversions.

◆ ADC_disableInterrupts()

void ADC_disableInterrupts ( void  )

Disable all ADC interrupts.

◆ ADC_enable()

void ADC_enable ( void  )

Enable the ADC12_B peripheral.

◆ ADC_enableConversion()

void ADC_enableConversion ( void  )

Enable ADC conversions.

◆ ADC_enableInterrupts()

void ADC_enableInterrupts ( void  )

Enable ADC interrupts.

◆ ADC_getInputChannel()

ADC_inputSelect ADC_getInputChannel ( void  )

Get currently set input channel.

◆ ADC_getPrecision()

ADC_precisionSelect ADC_getPrecision ( void  )

Get currently set conversion precision.

◆ ADC_getReference()

ADC_referenceSelect ADC_getReference ( void  )

Get currently set voltage reference.

◆ ADC_init()

void ADC_init ( void  )

Configure the ADC12_B module in single channel single measurement mode and prepare for measurement.

◆ ADC_initCustom()

void ADC_initCustom ( ADC_referenceSelect  reference,
ADC_precisionSelect  precision,
ADC_inputSelect  channel 
)

Configure the ADC12_B module in single channel single measurement mode and prepare for measurement.

Parameters
referencevoltage reference source
precisionADC measurement precision
channelADC input channel

◆ ADC_isBusy()

uint8_t ADC_isBusy ( void  )

Return true if ADC module is in the middle of a conversion, false if not.

◆ ADC_isReady()

uint8_t ADC_isReady ( void  )

Return false if ADC module is in the middle of a conversion, true if not.

◆ ADC_rawCorrection()

uint16_t ADC_rawCorrection ( uint16_t  raw)

Correct RAW ADC reading according to calibration procedure

See user guide 1.14.3.2

Parameters
rawRAW ADC value
Returns
corrected RAW ADC value

◆ ADC_rawToTemperature()

int16_t ADC_rawToTemperature ( uint16_t  raw)

Convert RAW ADC reading to milli degree Celcius.

Parameters
rawRAW ADC value
Returns
temperature in milli degree Celcius (e.g. 1 ~ .001C)

◆ ADC_rawToVoltage()

uint16_t ADC_rawToVoltage ( uint16_t  raw)

Convert RAW ADC reading to MilliVolts.

Based on formula (see user guide 25.2.1): Nadc = 4096 * ( (Vin + .5LSB) - Vr- ) / ( Vr+ - Vr- ) where LSB = ( Vr+ - Vr- ) / 4096

Formula converted to: Vin = (Nadc * ( Vr+ - Vr- ) ) / 4096 + Vr- - .5LSB where LSB = ( Vr+ - Vr- ) / 4096

Parameters
rawRAW ADC value
Returns
voltage in milli Volts (e.g. 1 ~ .001V)

◆ ADC_read()

uint16_t ADC_read ( void  )

Synchronously read ADC. Does block.

◆ ADC_setInputChannel()

void ADC_setInputChannel ( ADC_inputSelect  channel)

Set ADC input channel and single channel-single conversion mode.

Possible channels: analog input pins A0-A31 and internal temperature sensor.

Parameters
channelthe wanted channel.

◆ ADC_setPrecision()

void ADC_setPrecision ( ADC_precisionSelect  precision)

Set ADC conversion precision.

Parameters
precisionthe wanted precision.

◆ ADC_setReference()

void ADC_setReference ( ADC_referenceSelect  reference)

Set voltage reference and make the ADC to use it.

Parameters
referencethe wanted reference voltage.

◆ ADC_setSampleHold()

void ADC_setSampleHold ( void  )

Set ADC to sample and hold pulse mode.

◆ INT_ADC12()

__interrupt void INT_ADC12 ( void  )

Handles interrupts for the ADC module. Interrupts typically occur once after each conversion.

Variable Documentation

◆ ADC_SM

struct { ... } ADC_SM

State variables for the ADC module

◆ channel

ADC_inputSelect channel

◆ lastValue

uint16_t lastValue

◆ precision

◆ read_callback

void(* read_callback) (uint16_t)

◆ reference