[AnalogDevice]/ADuc7K2012. 11. 17. 16:32

[ADuc7061 EVM] 24bit ADC 테스트

[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;
            }
        }
 }
}

 

 

 

 

Posted by nexp

댓글을 달아 주세요