mbed library sources
Fork of mbed-src by
Revision 214:b6ec89a903fb, committed 2014-05-27
- Comitter:
- mbed_official
- Date:
- Tue May 27 08:15:07 2014 +0100
- Parent:
- 213:cc557cb04877
- Child:
- 215:83cf97a28428
- Commit message:
- Synchronized with git revision 9574629e27e5f14110170f860aa2e6aa44745341
Full URL: https://github.com/mbedmicro/mbed/commit/9574629e27e5f14110170f860aa2e6aa44745341/
[LPC1549] Fixed #327 ADC channel 1 issue
Changed in this revision
targets/hal/TARGET_NXP/TARGET_LPC15XX/analogin_api.c | Show annotated file Show diff for this revision Revisions of this file |
--- a/targets/hal/TARGET_NXP/TARGET_LPC15XX/analogin_api.c Mon May 26 18:30:07 2014 +0100 +++ b/targets/hal/TARGET_NXP/TARGET_LPC15XX/analogin_api.c Tue May 27 08:15:07 2014 +0100 @@ -59,25 +59,25 @@ error("ADC pin mapping failed"); } uint32_t port = (pin >> 5); - // enable clock for GPIOx + // enable clock for GPIOx LPC_SYSCON->SYSAHBCLKCTRL0 |= (1UL << (14 + port)); - // pin enable - LPC_SWM->PINENABLE0 &= ~(1UL << obj->adc); + // pin enable + LPC_SWM->PINENABLE0 &= ~(1UL << obj->adc); // configure GPIO as input LPC_GPIO_PORT->DIR[port] &= ~(1UL << (pin & 0x1F)); - + // power up ADC if (obj->adc < ADC1_0) { // ADC0 LPC_SYSCON->PDRUNCFG &= ~(1 << 10); LPC_SYSCON->SYSAHBCLKCTRL0 |= (1 << 27); - } - else { - // ADC1 + } + else { + // ADC1 LPC_SYSCON->PDRUNCFG &= ~(1 << 11); LPC_SYSCON->SYSAHBCLKCTRL0 |= (1 << 28); - } + } // select IRC as async. clock, divided by 1 LPC_SYSCON->ADCASYNCCLKSEL = 0; @@ -95,12 +95,18 @@ } static inline uint32_t adc_read(analogin_t *obj) { + volatile uint32_t channels; __IO LPC_ADC0_Type *adc_reg = (obj->adc < ADC1_0) ? (__IO LPC_ADC0_Type*)(LPC_ADC0) : (__IO LPC_ADC0_Type*)(LPC_ADC1); + if (obj->adc >= ADC1_0) + channels = ((obj->adc - ADC1_0) & 0x1F); + else + channels = (obj->adc & 0x1F); + // select channel adc_reg->SEQA_CTRL &= ~(0xFFF); - adc_reg->SEQA_CTRL |= (1UL << (obj->adc & 0x1F)); + adc_reg->SEQA_CTRL |= (1UL << channels); // start conversion and sequence enable adc_reg->SEQA_CTRL |= ((1UL << 26) | (1UL << 31));