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);
를 추가 입력해줍니다.
그러면 정상작동 합니다.
"동영상 차후 업로드"
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
20160324_장진웅_업무일지_저항&써미스터 (0) | 2016.03.24 |
---|---|
20160324_업무일지_정우민_ADC(써미스터) (0) | 2016.03.24 |
2016_03_24_업무일지_노태경 (0) | 2016.03.24 |
2016 03 24 업무일지 오전 저항과 써미스터 (0) | 2016.03.24 |
20160323_장진웅_업무일지_컨버터, 타이밍도,ADC (0) | 2016.03.24 |
20160317-업무일지-허도경-타이머카운터 (0) | 2016.03.24 |
20160323_조재찬_업무일지_펌웨어(ADC) (0) | 2016.03.24 |
20160323-업무보고-이보원-ADC – Analog to Digital Converter (0) | 2016.03.24 |