mbed library sources modified for open wear
Dependents: openwear-lifelogger-example
Fork of mbed-src by
Diff: targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/analogin_api.c
- Revision:
- 301:55638feb26a4
- Parent:
- 270:e2babe29baf8
- Child:
- 308:61b24bcb4679
diff -r fb529cc9bc22 -r 55638feb26a4 targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/analogin_api.c --- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/analogin_api.c Wed Aug 27 04:00:07 2014 +0100 +++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/analogin_api.c Wed Aug 27 08:45:06 2014 +0100 @@ -29,45 +29,47 @@ {p4, ADC0_0, 32}, {p5, ADC0_0, 64}, {p6, ADC0_0, 128}, - {NC , NC , 0} + {NC, NC, 0} }; -void analogin_init(analogin_t *obj, PinName pin) { - int analogInputPin=0; - const PinMap *map = PinMap_ADC; - +void analogin_init(analogin_t *obj, PinName pin) +{ + int analogInputPin = 0; + const PinMap *map = PinMap_ADC; + obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC); //(NRF_ADC_Type *) MBED_ASSERT(obj->adc != (ADCName)NC); - + while (map->pin != NC) { - if (map->pin == pin){ + if (map->pin == pin) { analogInputPin = map->function; break; } map++; } obj->adc_pin = (uint8_t)analogInputPin; - + NRF_ADC->ENABLE = ADC_ENABLE_ENABLE_Enabled; NRF_ADC->CONFIG = (ADC_CONFIG_RES_10bit << ADC_CONFIG_RES_Pos) | - (ADC_CONFIG_INPSEL_AnalogInputOneThirdPrescaling<< ADC_CONFIG_INPSEL_Pos) | + (ADC_CONFIG_INPSEL_AnalogInputOneThirdPrescaling << ADC_CONFIG_INPSEL_Pos) | (ADC_CONFIG_REFSEL_SupplyOneThirdPrescaling << ADC_CONFIG_REFSEL_Pos) | (analogInputPin << ADC_CONFIG_PSEL_Pos) | (ADC_CONFIG_EXTREFSEL_None << ADC_CONFIG_EXTREFSEL_Pos); } -uint16_t analogin_read_u16(analogin_t *obj) { - NRF_ADC->CONFIG &= ~ADC_CONFIG_PSEL_Msk; - NRF_ADC->CONFIG |= obj->adc_pin << ADC_CONFIG_PSEL_Pos; +uint16_t analogin_read_u16(analogin_t *obj) +{ + NRF_ADC->CONFIG &= ~ADC_CONFIG_PSEL_Msk; + NRF_ADC->CONFIG |= obj->adc_pin << ADC_CONFIG_PSEL_Pos; NRF_ADC->TASKS_START = 1; - while ( ( (NRF_ADC->BUSY & ADC_BUSY_BUSY_Msk) >> ADC_BUSY_BUSY_Pos) == ADC_BUSY_BUSY_Busy) - { + while (((NRF_ADC->BUSY & ADC_BUSY_BUSY_Msk) >> ADC_BUSY_BUSY_Pos) == ADC_BUSY_BUSY_Busy) { } - + return (uint16_t)NRF_ADC->RESULT; // 10 bit } -float analogin_read(analogin_t *obj) { +float analogin_read(analogin_t *obj) +{ uint16_t value = analogin_read_u16(obj); return (float)value * (1.0f / (float)ADC_RANGE); }