سلام
من این هدر رو برای خواندن 4 کانال ADC نوشتم
برای استفاده دوستان گزاشتم
کد:
/*********************************************************************************************************/
#include "lpc17xx.h" /* LPC17xx definitions */
#include "adc.h"
/*----------------------------------------------------------------------------
initialize ADC Pins
*----------------------------------------------------------------------------*/
void ADC_Init (void) {
LPC_PINCON->PINSEL1 = 0x00154000;
LPC_SC->PCONP|=(1<<12); /* Enable power to ADC block */
LPC_ADC->ADCR |= 0x200000;
}
/*----------------------------------------------------------------------------
get converted ADC0 value
*----------------------------------------------------------------------------*/
uint32_t ADC_GetCnv0 (void) {
uint32_t adGdr;
LPC_ADC->ADCR = 0x200F01; /* enable ADC */ /* ADC clock is 25MHz/5 */ /* select AD0.0 To 4 pin */
do {
adGdr = LPC_ADC->ADDR0; // Read A/D Data Register
}while ((LPC_ADC->ADGDR & 0x80000000)==0); // Wait for end of A/D Conversion
return (adGdr >> 4) & ADC_VALUE_MAX; // bit 4:15 is 12 bit AD value
}
/*----------------------------------------------------------------------------
get converted ADC1 value
*----------------------------------------------------------------------------*/
uint32_t ADC_GetCnv1 (void) {
uint32_t adGdr;
LPC_ADC->ADCR = 0x200F02; /* enable ADC */ /* ADC clock is 25MHz/5 */ /* select AD0.0 To 4 pin */
do {
adGdr = LPC_ADC->ADDR1; // Read A/D Data Register
}while ((LPC_ADC->ADGDR & 0x80000000)==0); // Wait for end of A/D Conversion
return (adGdr >> 4) & ADC_VALUE_MAX; // bit 4:15 is 12 bit AD value
}
/*----------------------------------------------------------------------------
get converted ADC2 value
*----------------------------------------------------------------------------*/
uint32_t ADC_GetCnv2 (void) {
uint32_t adGdr;
LPC_ADC->ADCR = 0x200F04; /* enable ADC */ /* ADC clock is 25MHz/5 */ /* select AD0.0 To 4 pin */
do {
adGdr = LPC_ADC->ADDR2; // Read A/D Data Register
}while ((LPC_ADC->ADGDR & 0x80000000)==0); // Wait for end of A/D Conversion
return (adGdr >> 4) & ADC_VALUE_MAX; // bit 4:15 is 12 bit AD value
}
/*----------------------------------------------------------------------------
get converted ADC3 value
*----------------------------------------------------------------------------*/
uint32_t ADC_GetCnv3 (void) {
uint32_t adGdr;
LPC_ADC->ADCR = 0x200F08; /* enable ADC */ /* ADC clock is 25MHz/5 */ /* select AD0.0 To 4 pin */
do {
adGdr = LPC_ADC->ADDR3; // Read A/D Data Register
}while ((LPC_ADC->ADGDR & 0x80000000)==0); // Wait for end of A/D Conversion
return (adGdr >> 4) & ADC_VALUE_MAX; // bit 4:15 is 12 bit AD value
}
/*------------------------------------------------------------------------------
read a converted value from the Analog/Digital0 converter
*------------------------------------------------------------------------------*/
uint16_t ADC_Get0 (void) {
uint16_t val;
/*----------------------------------------------------------------------------
start ADC Conversion
*----------------------------------------------------------------------------*/
LPC_ADC->ADCR &= ~(7<<24); /* stop conversion */
LPC_ADC->ADCR |= (1<<24); /* start conversion */
val = ADC_GetCnv0(); /* use upper 8 bits of 12 bit AD conversion */
/*----------------------------------------------------------------------------
stop ADC Conversion
*----------------------------------------------------------------------------*/
LPC_ADC->ADCR &= ~(7<<24); /* stop conversion */
return (val);
}
/*------------------------------------------------------------------------------
read a converted value from the Analog/Digital1 converter
*------------------------------------------------------------------------------*/
uint16_t ADC_Get1 (void) {
uint16_t val;
/*----------------------------------------------------------------------------
start ADC Conversion
*----------------------------------------------------------------------------*/
LPC_ADC->ADCR &= ~(7<<24); /* stop conversion */
LPC_ADC->ADCR |= (1<<24); /* start conversion */
val = ADC_GetCnv1(); /* use upper 8 bits of 12 bit AD conversion */
/*----------------------------------------------------------------------------
stop ADC Conversion
*----------------------------------------------------------------------------*/
LPC_ADC->ADCR &= ~(7<<24); /* stop conversion */
return (val);
}
/*------------------------------------------------------------------------------
read a converted value from the Analog/Digital2 converter
*------------------------------------------------------------------------------*/
uint16_t ADC_Get2 (void) {
uint16_t val;
/*----------------------------------------------------------------------------
start ADC Conversion
*----------------------------------------------------------------------------*/
LPC_ADC->ADCR &= ~(7<<24); /* stop conversion */
LPC_ADC->ADCR |= (1<<24); /* start conversion */
val = ADC_GetCnv2(); /* use upper 8 bits of 12 bit AD conversion */
/*----------------------------------------------------------------------------
stop ADC Conversion
*----------------------------------------------------------------------------*/
LPC_ADC->ADCR &= ~(7<<24); /* stop conversion */
return (val);
}
/*------------------------------------------------------------------------------
read a converted value from the Analog/Digital3 converter
*------------------------------------------------------------------------------*/
uint16_t ADC_Get3 (void) {
uint16_t val;
/*----------------------------------------------------------------------------
start ADC Conversion
*----------------------------------------------------------------------------*/
LPC_ADC->ADCR &= ~(7<<24); /* stop conversion */
LPC_ADC->ADCR |= (1<<24); /* start conversion */
val = ADC_GetCnv3(); /* use upper 8 bits of 12 bit AD conversion */
/*----------------------------------------------------------------------------
stop ADC Conversion
*----------------------------------------------------------------------------*/
LPC_ADC->ADCR &= ~(7<<24); /* stop conversion */
return (val);
}
/*********************************************************************************
** End Of File
*********************************************************************************/