[ADuc7061 EVM] 24bit ADC 테스트
ADuc7061에는 24bit ADC가 내장되어 있고 아날로그 파트에 있어 여러가지 옵션 설정을 쉽게 할수 있는 장점이 많다.
ADuc7061 ADC24 블록도
Aduc7601 ADC24 초기화 코드
// Configure ADC0 for continuous conversions, 1Khz, AIN0 in Single-ended mode
ADCMSKI = BIT0; // Enable ADC0 result ready interrupt source
ADCFLT = 0x7; // Chop off, 1Khz samping rate, SF = 7. No averaging
ADCMDE = BIT0 + BIT7; // Continuous Conversion mode, Normal mode, 4Mhz clock source to ADC.
ADC0CON = BIT1 +
BIT6 + // AIN0 selected in Single ended mode
BIT10 + // Unipolar ADC output
BIT15; // Gain = 1, Buffer on. Also, Int reference,
ADCCFG = 0;
IRQEN = BIT10; // Enable ADC interrupts
Aduc7061 24bit ADC테스트 동영상
ADUC7061 테스트용 PC프로그램
ADuc7061 ADC인터럽트 처리코드
24bit ADC를 가진 MSP430AFE 와 비교 했을때 24bit ADC결과 레지스터가 32bit로 되어 있기 때문에 속도나 처리하는데 있어 상당히 편리하다.
__irq __arm void IRQ_Handler(void)
{
unsigned long IRQSTATUS = 0;
IRQSTATUS = IRQSTA; // Read off IRQSTA register
if ((IRQSTATUS & BIT10) == BIT10) //If ADC0 interrupt source
{
ulADC0Result = ADC0DAT; // Read ADC0 conversion result
}
}
ADuc7061 24bit ADC테스트 예제코드
int main(void)
{
unsigned int cnt = 0;
SystemInit();
Led1Init();
//Serial Init
DebugInit(BAUD_115200);
DebugPrint("Aduc7061 EVM ADC Program.\r\n");
ADC_Init();
enable();
while(1)
{
//UART Debug
if(U0_IsGetByte())
{
switch(DebugGetByte())
{
case 'g':
DebugPrint("adc = %lu\r\n", ulADC0Result);
IRQEN |= BIT10;
Led1Off();
break;
}
}
}
}