ADC (Analog Digital Converter)
Analog 는 끊어짐이 없이 계속 이어짐.
Analog의 연속적인 값을 받아 오기 위해 Digital 로 바꾼다.
콘덴서의 충전시간을 이용해서(시분할) 숫자로 값을 받아 볼 수 있다.
p.294 변환의 기준전압
A/D Converter 에는 외부 단자 ADVREF를 통하여 기준전압이 공급되어야 한다. 각 채널에서의 아날로그 신호 입력의 범위는 0.0V ~ADVREF 로 결정된다.
(ADVREF 핀에 기준 전압을 걸어주면 된다.) (우리가 사용하는 칩은 3.3V or 5V를 자동으로 걸어놨다.)
Sampling : P.297 ADC_MR - PRESCAL : Prescaler Rate Selection ADC 클럭 주파수
ADC 값을 평균적으로 받아 올 수 있다. 분해능을 크게 잡고 주파수를 길게 잡을 수록 정확한 평균값을 얻어 올 수 있지만 시간이 오래 걸린다.
8비트 분해능 : 0V ~ 기준전압 까지 디지털화 시켜서 받아 볼 수 있는 값이 255
10비트 분해능 : 1024
세밀한 값을 얻어 오기 위해서는 분해능을 높게 잡으면 된다.
8비트 분해능을 사용할 경우에는 이중에서 하위 8비트만 유효하며 사용하지 않는 상위 2비트는 0으로 읽혀진다.
A/D 변환이 완료되면 그 결과는 각 채널의 데이터 레지스터인 ADC_CRDx와 모든 채널에 공통으로 사용되는 최신 데이터 레지스터인 ADC_LCDR에 저장.
최신 데이터 레지스터는 제일 마지막에 변환된 CHANNEL 의 값이 저장된다.
변환이 완료 되면 상태 레지스터 ADC_SR 에서 EOCx 비트와 DRDY 비트가 1로 세트된다. 사용자 프로그램은 ADC_CDRx 레지스터를 읽으면 EOCx 비트는 0으로 클리어 되며, ADC_LCDR 레지스터를 읽으면 EOCx 비트와 DRDY 비트가 모두 0으로 클리어 된다.
A/D 변환의 트리거
A/D 변환 동작의 시작은 소프트웨어 또는 하드웨어적인 방법으로 트리거 할 수 있다.
ADC_MR - TRGEN 비트를 사용하여 트리거 방법을 설정할 수 있다.
A/D 슬립 모드 : ADC_MR 의 STARTUP 기동시간 - 슬립모드가 깨어나는 시간
P.298
ADC_CHER (0~7 CHANNEL) : 채널 허용 레지스터
ADC_CHDR (0~7 CHANNEL) : 채널 금지 레지스터
PA17~20 : AD0~AD3 사용
전원 공급 : PID4 - ADC 에 공급
PIO 핀을 따로 ADC 로 사용할 때 PIO 병렬 입출력 장치의 17~20번을 금지 시켜주어야 AD0~3 을 사용할 수 있다.
PDR 을 사용
장치 선택 : ADC 핀 4개가 따로 있기 때문에 바로 쓸 수도 있다.
값을 받을 때는 하이퍼 터미널이나 CLCD 로 받아 올 수 있다.
itoa : int 형을 char 형으로 형변환 시켜서 하이퍼터미널에 출력한다.
#include "dk.h"
int main(void)
{
unsigned int clear;
char ch;
PMC_PCER = (1<<2)|(1<<4);
//---------
병렬
입출력
설정
PIO_ASR = (unsigned int)1<<9 | (unsigned int)1<<10;
PIO_PDR = (unsigned int)1<<9 | (unsigned int)1<<10;
//---------
디버그유닛설정
DBGU_CR = (unsigned int)1<<4 | (unsigned int)1<<6; //
송신부수신부허용설정
DBGU_MR = (unsigned int)1<<11;
DBGU_BRGR = 26;
ADC_MR = (1<<4)|(1<<13)|(1<<14)|(1<<15);
ADC_CHER = 1<<4;
while(1)
{
ADC_CR = 1<<1;
ch = ADC_SR;
if(ADC_SR & (1<<4))
{
ch = ADC_CDR[4];
Delayms(300);
DBGU_THR = ch;
Delayms(300);
}
clear = ADC_SR;
}
return 0;
}
'코스웨어 > 10년 스마트폰BSP' 카테고리의 다른 글
[BSP] 업무일지 -김기찬- (0) | 2010.07.16 |
---|---|
[BSP]업무일지-정호영-20100715 (0) | 2010.07.15 |
[BSP]업무일지-박동수-20100714 (1) | 2010.07.15 |
[BSP]업무일지-서동준-20100713 (0) | 2010.07.15 |
[BSP]업무일지 - 김강수 - 20100708 (0) | 2010.07.12 |
[BSP]업무일지 - 김병찬 - 20100707 (0) | 2010.07.08 |
[BSP]업무일지-이상구-20100706 (0) | 2010.07.06 |
[bsp]업무일지_한경수_20100705 (0) | 2010.07.06 |