1 /* Copyright (C) 2013 Czech Technical University in Prague
4 * - Carlos Jenkins <carlos@jenkins.co.cr>
6 * This document contains proprietary information belonging to Czech
7 * Technical University in Prague. Passing on and copying of this
8 * document, and communication of its contents is not permitted
9 * without prior written authorization.
13 * Analog Input RPP API implementation file.
17 * RPP API documentation.
23 #if rppCONFIG_INCLUDE_ADC == 1
25 #if rppCONFIG_DRV == 1
28 // RPP has 12 ADC channels
29 // See s_adcSelect and s_adcFiFoSize in ti_drv_adc.c for hardware configuration.
30 #define ADC_CHANNELS 12
31 static adcData_t in_cache[ADC_CHANNELS];
34 static boolean_t initialized = FALSE;
43 #if rppCONFIG_DRV == 1
51 int16_t rpp_adc_get(uint8_t pin)
53 if((pin < 1) || (pin > 12)) {
59 #if rppCONFIG_DRV == 1
60 // This conversion uint16_t -> int16_t is safe because we know values
61 // are 12bits. Here we are masking those 12bits just in case.
62 result = (int16_t) (in_cache[pin - 1].value & 0xFFF);
69 int8_t rpp_adc_update()
71 #if rppCONFIG_DRV == 1
72 // in_cache is thread safe because it's only write operation is mutexed
73 drv_adc_read_adc((adcData_t*)&in_cache);
80 #endif /* rppCONFIG_INCLUDE_ADC */