#include "LPC17xx.H"
void adc_init()
{
LPC_SC->PCONP |= (1 << 12); //set PCADC for power on ADC ;
LPC_ADC->ADCR |= (1 << 21); // start adc
LPC_PINCON->PINSEL1 &= ~0x003FC000; /* P0.23~26, A0.0~3, function 01 */
LPC_PINCON->PINSEL1 |= 0x00154000;
LPC_PINCON->PINMODE1 &= ~0x003FC000;
LPC_PINCON->PINMODE1 |= 0x002A8000;
}
int ADCRead(char channelNum) {
int data;
LPC_ADC->ADCR &= 0xFFFFFF00; // clear channels
LPC_ADC->ADCR |= (1 << 24) | (1 << channelNum); // set chanel and start convert
while (!(LPC_ADC->ADGDR & (1<<31))); //wait to done
data = LPC_ADC->ADDR7;
LPC_ADC->ADCR &= 0xF8FFFFFF; /* stop ADC now */
data = ( data >> 4 ) & 0xFFF;
return ( data ); /* return A/D conversion value */
} |
/*------------------------------------------------------------------------------- www.ECA.ir LPC1768 Dev Board Rev.A --------------------------------------------------------------------------------*/ #include <LPC17xx.h> #include <stdio.h> #include "uart.h" #include "adc.h" void Delay (uint32_t Time) { uint32_t i; i = 0; while (Time--) { for (i = 0; i < 5000; i++); } } int main(void) { volatile int i=0; unsigned char lcd_buf[32]; SystemInit(); adc_init(); UART0_Init(); while (1) { i++; sprintf(lcd_buf,"AnalogRead(%d)(A0): %d\r\n\n",i,ADCRead(0)); UART0_SendString(lcd_buf); Delay(2000); } } |
data = LPC_ADC->ADGDR;
while(!(data >> 31)) /* test the DONE bit, which is bit 31 */
{
data = LPC_ADC->ADGDR;
}
return(0xfff & (data >> 4));
|
while(!(dr >> 1)) |
while (!(LPC_ADC->ADGDR & (1<<31))); //wait to done data = LPC_ADC->ADDR7; |
data = LPC_ADC->ADGDR;
while(!(dr >> 1))
{
data = LPC_ADC->ADGDR;
}
return(0xfff &(data >> 4)); |
/*------------------------------------------------------------------------------- www.ECA.ir LPC1768 Dev Board Rev.A --------------------------------------------------------------------------------*/ #include <lpc17xx.h> main(){ int a; SystemInit(); LPC_GPIO2->FIODIR = 0xfff; LPC_PINCON->PINSEL3 |= (3UL<<30); /* P1.31 is AD0.5 */ LPC_SC->PCONP |= (1<<12); /* Enable power to ADC block */ LPC_ADC->ADCR = (1<< 5) | /* select AD0.5 pin */ (4<< 8) | /* ADC clock is 25MHz/5 */ (1<<21); /* enable ADC */ while(1){ LPC_ADC->ADCR &= ~(7<<24); /* stop conversion */ LPC_ADC->ADCR |= (1<<24); /* start conversion */ while (!(LPC_ADC->ADGDR & (1UL<<31))); /* Wait for Conversion end */ a = (LPC_ADC->ADGDR>>4 & 0xfff); LPC_GPIO2->FIOPIN = a>>4; } } |