![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Versão atual 13-12-2013.
Dependencies: EthernetInterface mbed-rtos mbed
Drivers/adc.c@0:65c41a68b49a, 2013-12-13 (annotated)
- Committer:
- rebonatto
- Date:
- Fri Dec 13 11:42:59 2013 +0000
- Revision:
- 0:65c41a68b49a
Versao atual 13-12-2013.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rebonatto | 0:65c41a68b49a | 1 | /* |
rebonatto | 0:65c41a68b49a | 2 | * adc.c |
rebonatto | 0:65c41a68b49a | 3 | * |
rebonatto | 0:65c41a68b49a | 4 | * Created on: 02/07/2011 |
rebonatto | 0:65c41a68b49a | 5 | * Author: francisco |
rebonatto | 0:65c41a68b49a | 6 | */ |
rebonatto | 0:65c41a68b49a | 7 | |
rebonatto | 0:65c41a68b49a | 8 | #include <LPC17xx.h> |
rebonatto | 0:65c41a68b49a | 9 | #include "adc.h" |
rebonatto | 0:65c41a68b49a | 10 | |
rebonatto | 0:65c41a68b49a | 11 | void init_adc(int adc_clk) |
rebonatto | 0:65c41a68b49a | 12 | { |
rebonatto | 0:65c41a68b49a | 13 | // Turn on power to ADC block |
rebonatto | 0:65c41a68b49a | 14 | LPC_SC->PCONP |= PCADC; |
rebonatto | 0:65c41a68b49a | 15 | |
rebonatto | 0:65c41a68b49a | 16 | // Turn on ADC peripheral clock |
rebonatto | 0:65c41a68b49a | 17 | LPC_SC->PCLKSEL0 &= ~(3 << PCLK_ADC); |
rebonatto | 0:65c41a68b49a | 18 | LPC_SC->PCLKSEL0 |= (ADC_CCLK << PCLK_ADC); //CLK/8 |
rebonatto | 0:65c41a68b49a | 19 | |
rebonatto | 0:65c41a68b49a | 20 | unsigned int clkdiv = (SystemCoreClock/1)/65; |
rebonatto | 0:65c41a68b49a | 21 | clkdiv = clkdiv/adc_clk; |
rebonatto | 0:65c41a68b49a | 22 | |
rebonatto | 0:65c41a68b49a | 23 | LPC_ADC->ADCR &= ~(ADC_OPERATIONAL|ADC_CLKDIV(255)); |
rebonatto | 0:65c41a68b49a | 24 | LPC_ADC->ADCR |= (ADC_OPERATIONAL|ADC_CLKDIV(clkdiv)); |
rebonatto | 0:65c41a68b49a | 25 | |
rebonatto | 0:65c41a68b49a | 26 | //NVIC_EnableIRQ(ADC_IRQn); |
rebonatto | 0:65c41a68b49a | 27 | } |
rebonatto | 0:65c41a68b49a | 28 | |
rebonatto | 0:65c41a68b49a | 29 | void setup_start(int mode,int edge) |
rebonatto | 0:65c41a68b49a | 30 | { |
rebonatto | 0:65c41a68b49a | 31 | LPC_ADC->ADCR |= mode; |
rebonatto | 0:65c41a68b49a | 32 | } |
rebonatto | 0:65c41a68b49a | 33 | |
rebonatto | 0:65c41a68b49a | 34 | void select_channels(int adc_ch) |
rebonatto | 0:65c41a68b49a | 35 | { |
rebonatto | 0:65c41a68b49a | 36 | LPC_ADC->ADCR &= ~(ADC_CH_0|ADC_CH_1|ADC_CH_2|ADC_CH_3|ADC_CH_4|ADC_CH_5|ADC_CH_6|ADC_CH_7); |
rebonatto | 0:65c41a68b49a | 37 | LPC_ADC->ADCR |= adc_ch; |
rebonatto | 0:65c41a68b49a | 38 | |
rebonatto | 0:65c41a68b49a | 39 | LPC_ADC->ADINTEN |= (1U<<8);//adc_ch; |
rebonatto | 0:65c41a68b49a | 40 | |
rebonatto | 0:65c41a68b49a | 41 | if(adc_ch&ADC_CH_0) |
rebonatto | 0:65c41a68b49a | 42 | { |
rebonatto | 0:65c41a68b49a | 43 | LPC_PINCON->PINSEL1 |= 1U<<14; |
rebonatto | 0:65c41a68b49a | 44 | LPC_PINCON->PINMODE1 |= 2U<<14; |
rebonatto | 0:65c41a68b49a | 45 | } |
rebonatto | 0:65c41a68b49a | 46 | if(adc_ch&ADC_CH_1) |
rebonatto | 0:65c41a68b49a | 47 | { |
rebonatto | 0:65c41a68b49a | 48 | LPC_PINCON->PINSEL1 |= 1U<<16; |
rebonatto | 0:65c41a68b49a | 49 | LPC_PINCON->PINMODE1 |= 2U<<16; |
rebonatto | 0:65c41a68b49a | 50 | } |
rebonatto | 0:65c41a68b49a | 51 | if(adc_ch&ADC_CH_2) |
rebonatto | 0:65c41a68b49a | 52 | { |
rebonatto | 0:65c41a68b49a | 53 | LPC_PINCON->PINSEL1 |= 1U<<18; |
rebonatto | 0:65c41a68b49a | 54 | LPC_PINCON->PINMODE1 |= 2U<<18; |
rebonatto | 0:65c41a68b49a | 55 | } |
rebonatto | 0:65c41a68b49a | 56 | if(adc_ch&ADC_CH_3) |
rebonatto | 0:65c41a68b49a | 57 | { |
rebonatto | 0:65c41a68b49a | 58 | LPC_PINCON->PINSEL1 |= 1U<<20; |
rebonatto | 0:65c41a68b49a | 59 | LPC_PINCON->PINMODE1 |= 2U<<20; |
rebonatto | 0:65c41a68b49a | 60 | } |
rebonatto | 0:65c41a68b49a | 61 | if(adc_ch&ADC_CH_4) |
rebonatto | 0:65c41a68b49a | 62 | { |
rebonatto | 0:65c41a68b49a | 63 | LPC_PINCON->PINSEL3 |= 3U<<28; |
rebonatto | 0:65c41a68b49a | 64 | LPC_PINCON->PINMODE3 |= 2U<<28; |
rebonatto | 0:65c41a68b49a | 65 | } |
rebonatto | 0:65c41a68b49a | 66 | if(adc_ch&ADC_CH_5) |
rebonatto | 0:65c41a68b49a | 67 | { |
rebonatto | 0:65c41a68b49a | 68 | LPC_PINCON->PINSEL3 |= 3U<<30; |
rebonatto | 0:65c41a68b49a | 69 | LPC_PINCON->PINMODE3 |= 2U<<30; |
rebonatto | 0:65c41a68b49a | 70 | } |
rebonatto | 0:65c41a68b49a | 71 | if(adc_ch&ADC_CH_6) |
rebonatto | 0:65c41a68b49a | 72 | { |
rebonatto | 0:65c41a68b49a | 73 | LPC_PINCON->PINSEL0 |= 2U<<6; |
rebonatto | 0:65c41a68b49a | 74 | LPC_PINCON->PINMODE0 |= 2U<<6; |
rebonatto | 0:65c41a68b49a | 75 | } |
rebonatto | 0:65c41a68b49a | 76 | if(adc_ch&ADC_CH_7) |
rebonatto | 0:65c41a68b49a | 77 | { |
rebonatto | 0:65c41a68b49a | 78 | LPC_PINCON->PINSEL0 |= 2U<<4; |
rebonatto | 0:65c41a68b49a | 79 | LPC_PINCON->PINMODE0 |= 2U<<4; |
rebonatto | 0:65c41a68b49a | 80 | } |
rebonatto | 0:65c41a68b49a | 81 | } |