본문 바로가기
코스웨어/16년 스마트컨트롤러

20160323_김가연_업무일지_ADC

by 알 수 없는 사용자 2016. 3. 24.
728x90
반응형

ACD-Analog to Digital Converter

즉 아날로그를 디지털로 변환시키는 것을 뜻합니다.

녹음이나 녹화등이 그것에 대한 예라고 볼 수 있습니다.

 

데이터시트를 참고해서 헤더파일에서 디파인을 시키고

ADC.c와 ADC.h 헤더파일을 만듭니다.

<ADC.c>

#include "adc.h"

void ADC_Init(void)
{
  ADMUX=(0<<REFS1)|(0<< REFS0)|(0<< ADLAR)|(0<< MUX4)|(0<< MUX3)|(0<< MUX2)|(0<< MUX1)|(0<< MUX0);
  ADCSRA=(1<<ADEN)|(0<< ADSC)|(0<< ADATE)|(0<< ADIF)|(0<< ADIE)|(1<< ADPS2)|(1<< ADPS1)|(0<< ADPS0);
  ADCSRB=(0<<ACME)|(0<< MUX5)|(0<< ADTS2)|(0<< ADTS1)|(0<< ADTS0);



}

unsigned int ADC_Run0(void)
{
  ADC_Init();
  ADCSRA=ADCSRA|(1<< ADSC);
  while(0!=(ADCSRA&(1<< ADSC)));

  return ADC;
}

 

데이터 시트를 참고하여 값 셋팅을 해줍니다.

 

<ADC.h>

#ifndef __ADC_H__
#define __ACD_H__

#include "main.h"

void ADC_Init();
unsigned int ADC_Run0();



#endif //__ADC_H__

 

함수 두개를 추가시켜 줍니다.

 

메인함수를 수정합니다.

int main(void)
{  
  unsigned char ucData;
  char caVar[]="0000";
  unsigned int uiVar;

  LCD_Init();
  USART0_Init();
  USART0_Str("AVR ON ");
  ADC_Init();
  
  while(1)//
  {
    uiVar=ADC_Run0();
    caVar[0]='0'+uiVar/1000;
    caVar[1]='0'+(uiVar%1000)/100;
    caVar[2]='0'+(uiVar%100)/10;
    caVar[3]='0'+uiVar%10;
    LCD_Str(caVar);
    USART0_Str(caVar);

  }
  
  return 0;
}

 

자리셋팅을 합니다.

 

이상태로 컴파일 하여 실행시키면

실행시키고자 한 숫자가 무한으로 나오는 것을 볼 수 있습니다.

실행시키고자 한 숫자를

한번만 나오게 하려면

while문 내부 제일 마지막에

LCD_Inst(LCD_HOME);

를 추가 입력해줍니다.

그러면 정상작동 합니다.

 

 

"동영상 차후 업로드"

 

728x90