1. AVR 의 ADC 란 ??
-> 아날 로그 신호를 디지털 화 시키는 것이다!!
ADC 레지스터 설정에서 ADMUX 의 REFS0 의 설정에 따라 데이터가 우측 정렬 , 좌측 정렬로
값이 들어간다!!!.
우측 정렬 같은경우
$05 | ADC9 | ADC8 | ||||||
$04 | ADC7 | ADC6 | ADC5 | ADC4 | ADC3 | ADC2 | ADC1 | ADC0 |
좌측 정렬 같은경우
$05 | ADC9 | ADC8 | ADC7 | ADC6 | ADC5 | ADC4 | ADC3 | ADC2 |
$04 | ADC1 | ADC0 |
이런식으로 데이터 가 쌓이게 되는데!!!! 여기서 집고 넘어가야 할것은 !!!
메모리 주소이다 !!! ADC 각각의 레지스터 에 들어가는데 메모리 주소 번지를 보아라
ADCL가 먼저 들어오고 ADCH 가 나중에 들어오는것을 알수있다!!!
그럼 사용자는 ADC값을 받기 위해서는 ADCL 먼저 받고 ADCH를 받아야 될것이다 !!!!
2. AVR 의 LC 필터
LC 필터는 외부전원인 VCC 와 AVR에 인가되는 VCC 단 사이에 0.1uF 세라믹 커패시터를 연결하고 다시 외부전원 VCC와 AVCC 연결 사이에 10uH 를 연결 시켜준다.
10uH의 끝부분에는 0.1uF을 마지막으로 연결 시켜주고 그라운드랑 연결하면 LC필터가
만들어진다!!.
3. 재귀적 평균 필터
재귀적 평균 필터란 ??
평균값을 구할때 입력된 값을 다 더하고 그 입력된 횟수만큼 나눔으로서 평균값을 구할수 있는데 이런식으로 평균값을 구하면 컨트롤러가 처리하는데 시간이 걸릴수 밖에 없다 !!!1
자 그럼 이를 해결하기 위해 재귀적 평균 필터를 쓰겠다!!!
재귀적 평균은
now_Data = (unsigned int)((cCount * avg)-avg) /cCount ;
after_Data = (unsigned int) g_adcMdata / cCount ;
filter_Data = now_Data + after_Data;
avg = filter_Data ;
식으로 표현 하자면 Data = ((n-1) / n)*전 데이터값 + (1/n)*현재 데이터값
'Hard Ware > Atmega 128!!' 카테고리의 다른 글
Winavr(GCC)에서 float형을 printf로 출력할때 체크해제해야할부분 (0) | 2011.09.20 |
---|---|
여러개의 ADC 사용할때 주의 사항!!! (0) | 2011.09.14 |