9 ADC
Codigo
void ADC_config()
{
SYSCTL->RCGCGPIO |= (0x01) << 4; // Port E clock enable
GPIOE->DIR &= ~0x04; // 2) make PE2 input 1011
GPIOE->AFSEL |= 0x04; // 3) enable alternate function 0100
GPIOE->DEN &= ~0x04; // 4) disable digital I/O on PE2 1011
GPIOE->AMSEL |= 0x04; // 5) enable analog function on 0100
SYSCTL->RCGC0 |= 0x10000; // 6) activate clock ADC0 (16BIT)
SYSCTL->RCGC0 &= ~0x00000300; // 7) configure for 125K MAXADC0SPD= 0x0 125K samples/second
ADC0->SSPRI = 0x0123; // 8) Sequencer 3 is highest
ADC0->ACTSS &= ~0x0008; // 9) disable sample sequencer 3 0111
ADC0->EMUX &= ~0xF000; // 10) seq3 is software trigger Always (continuously sample)
ADC0->SSMUX3 &= ~0x000F; // 11) clear SS3 field
ADC0->SSMUX3 += 1; // set channel Ain1 (PE2)
ADC0->SSCTL3 = 0x0006; // 12) no TS0 D0, yes IE0 END0
ADC0->ACTSS |= 0x0008; // 13) enable sample sequencer 3
}
unsigned short ADC0_capture(void){
unsigned short result;
ADC0->PSSI = 0x0008; // 1) initiate SS3
while((ADC0->RIS & 0x08)==0){}; // 2) wait for conversion done
result = ADC0->SSFIFO3 & 0xFFF; // 3) read result
ADC0->ISC = 0x0008; // 4) acknowledge completion
return result;
}
Reto para el estudiante:
Re-escriba el codigo utilizando las dirrecciones de los registros del ADC en lugar de (->).
enviar a [email protected] despues de asegurarse de que el programa funciona correctamente.
enviar a [email protected] despues de asegurarse de que el programa funciona correctamente.
Haz clic aquí para editar.