신 당 N76E 003 ADC 다 중 채널 채집 처리(2)

이전 블 로그 도 N76E 003 의 ADC 에 관 한 다 중 채널 수집 이 었 으 나 이 버 전 은 아직도 문제 가 있 었 고 뒤에 도 고 칠 생각 이 나 지 않 았 기 때문에 여기 서 이러한 처리 방법 을 다시 보완 했다.
    우선 설정 에 있어 서 설정 은 매우 간단 합 니 다.초기 화 할 때 하나의 채널 을 초기 화 한 다음 에 전체 변수 인 gAdcChannel 을 돌아 가 는 표지 로 정의 합 니 다.이 MCU 의 ADC 속 도 는 비교적 좋 습 니 다.약 3-4us 는 ADC 의 샘플링 을 완성 할 수 있 지만 신 당 이 제공 하 는 Demo 를 사용 하지 않 는 것 을 권장 합 니 다.그 는 while()를 사용 하여 기다 리 는 방식 을 막 고 ADC 샘플링 결과 가 나 올 때 까지 다음 작업 을 할 수 있 기 때문이다.
void adcInit(void)
{
    Enable_ADC_BandGap;
    gAdcChannel=1;
    clr_ADCS;//  clr_ADCF;                     
    set_ADCS;//                  BSP  ,       ,   
             //  Enable_ADC_BandGap     ADC   ,        
}
void  sysAdcCheck(void)//ADC             ,                    
{
u16 adcTempData;
    if(ADCS == 0)
    {//adc          
        adcTempData = (ADCRH<<4)+ADCRL;//    
        clr_ADCEN;//             ADC   ,
        switch(gAdcChannel)
        {
            case 1:
                Eanble_ADC_AIN2;
                set_ADCS;//                       ,        
                gAdcChannel=2;//          ,        ,       
                break;
            case 2:
                 Eanble_ADC_AIN3;
                set_ADCS;//                       ,        
                gAdcChannel=3;//          ,        ,       
                break;
             case 3://                     
                 Eanble_ADC_AIN1;
                set_ADCS;//                       ,        
                gAdcChannel=1;//          ,        ,       
                break;
            default:
                 Eanble_ADC_AIN1;
                 set_ADCS;//                       ,        
                 gAdcChannel=1;//          ,        ,       
                 break;
        }
    }
}

    위 는 전체 처리 과정 이지 만 모든 사람의 개발 에서 ADC 에 대한 요구 가 다 르 기 때문에 이것 은 참고 일 뿐이다.
    그리고 또 하나의 문 제 는 만약 에 이상 한 상황 이 발생 하여 ADC 의 값 을 계속 읽 지 못 한다 고 가정 하 는 것 입 니 다.자=이것 이 바로 while()로 기다 림 을 막 을 수 없 는 이유 입 니 다.이 럴 때 ADC 를 다시 켜 야 합 니 다.아래 의 방법 을 참고 하 십시오.
    ADC 가 읽 지 못 하면 ADCS 가 항상 1 과 같다 고 생각 합 니 다.그러면 우 리 는 if(ADCS==0)의 판단 에서 타이머 의 타이머 변 수 를 사용 할 수 있 습 니 다.들 어 올 때마다 이 변 수 를 0 으로 정리 하고 들 어 오지 않 으 면 이 변 수 는 우리 가 설정 한 시간 을 초과 하여 계속 누적 시간 을 계산 할 수 있 습 니 다.그러면 주 순환 에서 ADC 샘플링 을 다시 시작 합 니 다.

좋은 웹페이지 즐겨찾기