-
20140430 (ADC, 컴파일 -D 옵션, extern, static)부산IT학원/스마트컨트롤러 2014. 4. 30. 15:28
53일차
----------------------
ATMega128 ADC
----------------------
--- ADC
Anolog to Digital Convert
아날로그 신호를 디지털 신호로 변환.
- 가청 주파수
사람은 보통 16Hz ~ 20,000Hz 사이를 들을 수 있다.
전화기가 300Hz ~ 3300Hz 음질을 낸다고 한다.
더 좋은 음질을 내려면 장비 값이 비싸진다.
- 아날로그 신호를 디지털 신호로 바꿔지는 과정
- DAC 디지털을 아날로그로 바꾸는 것.
- 이제 ATMega128의 ADC를 살펴보러
먼저 ATMega128문서의 첫 페이지에서 얻을 수 있는 ADC 정보.
- PIN 구성에서 볼 수 있는 정보.
- ADC 블럭 조직도
- Prescaler와 변환.
- 타이밍도
- ADC 관련 Reg.
ADMUX
ADCSRA
ADCH, ADCL
- ADMUX Reg
- 7, 6번 비트
- REFS1, REFS0
기준 전압 선택.
우리는 0, 0 설정
- 5번 비트
- ADLAR
샘플링 비트 (10bit)를
저장하는 정렬(왼쪽, 오른쪽)
왜 왼쪽 정렬 하는지는 아직 모름.
일단은 오른쪽 정렬
- 4번 비트
MUX4
변환 모드에 대한
변환 PIN 선택
오늘은 여기까지.....
- C
--- 컴파일 과정 중에 매크로상수 바꾸는 법
(MS vs)
cl -D매크로상수=상수 소스파일
#include <stdio.h>
//#define HIT_NUM 5
int main()
{
#if HIT_NUM == 5
puts("매크로 상수 HIT_NUM은 현재 5입니다.");
#else
puts("매크로 상수 HIT_NUM은 현재 5가 아닙니다.");
#endif
return 0;
}ex) cl -DHIT_NUM=10 main.c
출력 화면
ex) cl -DHIT_NUM=5 main.c
출력 화면
이렇게 된다.
--- extern
분할 컴파일 중 외부에 있는 변수, 함수 사용시
앞에 extern을 넣으면 사용할 수 있다.
보통은 생략 가능.
변수 앞에는 쓸 것을 추천한다.
ex) 소스
- test.c
int iNum;
void test()
{
++iNum;
}- main.c
#include <stdio.h>
void test();
extern int iNum;
int main()
{
printf("%d \n", iNum);
test();
printf("%d \n", iNum);
return 0;
}cl main.c test.c
출력 화면
잘 나온다.
이번엔 static
- test.c
static int iNum;
void test()
{
++iNum;
}- main.c
#include <stdio.h>
void test();
extern int iNum;
int main()
{
printf("%d \n", iNum);
test();
printf("%d \n", iNum);
return 0;
}cl main.c test.c 하면 오류가 난다.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140508 (Interrupt, 서적관리 프로그램 작성, open) (0) 2014.05.08 20140507 (ADCL, ADCH, 광센서 실습, 서적관리 프로그램 구현) (0) 2014.05.07 20140429 (PC와 시리얼 통신으로 LCD 문자 찍기, 사용자 정의 폰트, fseek, ftell) (0) 2014.04.29 20140428 (PC, ATMega128 간 시리얼 통신, fread, fwrite) (0) 2014.04.28 20140425 (UART Reg setting, c언어 파일 입출력, feof) (0) 2014.04.25