Recompensa por puntuación alta: tutoriales y procedimientos detallados para que LPC1114 implemente la conversión ADC, ¿explicación detallada?
#define ADCFrequency 1000000 /* Reloj de conversión 1MHz */
void ADCInit( void )//Inicialización
{
LPC_SYSCON- gt; SYSAHBCLKCTRL |= (1 lt; lt; 16); /* Permitir que E/S configure el reloj del módulo*/
LPC_IOCON-gt; PIO1_10 amp; PIO1_10 como modo de entrada analógica */
LPC_IOCON-gt; PIO1_10 |= 0x01; /* PIO1_10 canal de entrada analógica 6 */
LPC_IOCON-gt; /* Configuración PIO1_1 es modo de entrada analógica*/
LPC_IOCON-gt; PIO1_11 |= 0x01; /* PIO1_1 canal de entrada analógica 7 */
LPC_SYSCON-gt;= ~(0x01 lt; lt; 4); /* Encendido del módulo ADC*/
LPC_SYSCON-gt; SYSAHBCLKCTRL |= (0x01 lt; lt; 13); /p >
LPC_ADC-gt; CR = (0x01 lt; lt; 6) /* SEL=6, seleccione ADC6 */
(0x01 lt; lt; 7) /* SEL =7, seleccione ADC7 */
(( SystemFrequency / ADCFrequency - 1 ) lt; lt; 8 ) /* Reloj de conversión 1MHz */
( 1 lt; lt; 16 ) | /* BURST=1, usar modo ráfaga*/
(0 lt; lt; 17) |
/* Convertir usando 11 relojes*/
(0 lt; lt; 24) |* La conversión ADC se detiene*/
(0 lt; lt; 27); Inicie la conversión de ADC, este bit no es válido*/
NVIC_EnableIRQ(ADC_IRQn); /* Habilite la interrupción de ADC y configure la prioridad*/
NVIC_SetPriority(ADC_IRQn, 2);
p>LPC_ADC-gt; INTEN = (1 lt; lt; 6); /* Habilitación de interrupción del canal 6*/
LPC_ADC-gt; /* Habilitación de interrupción del canal 7*/
}
void ADC_IRQHandler(void)//Interrumpir proceso
{
bAdcFlag = 1 ;
Canal_1 = ( (LPC_ADC-gt; DR[6]) gt; gt; 6) amp; /* Canal_1 lee el valor del canal 6*/
Canal_2; = ( (LPC_ADC-gt; DR[7]) gt; gt; 6) amp; /* Channel_2 lee el valor del canal 7*/
}
INT16U sTreatmentADC (INT16U wAdcChannel)//Proceso de procesamiento
{
............
if(bAdcFlag == 1 ){
bAdcFlag = 0; /* Borrar bandera*/
.............
}