AVR > ADC [8채널] 64번 평균화 작업

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > AVR

ADC | ADC [8채널] 64번 평균화 작업

페이지 정보

작성자 키트 작성일17-08-29 10:13 조회2,033회 댓글0건

본문

#include <mega128.h> 
//
void main(void){
   unsigned int i,ch,SUM,AVG[8];
   DDRA=0xFF;
   while(1){
      for(ch=0;ch<8;ch++){
         ADMUX=0x40|chSUM=0;
         for(i=0;i<64;i++){ ADCSRA=0xD7while(!(ADCSRA&10)); SUM+=ADCW; }
         AVG[ch]=SUM>>6;
      }
      if(AVG[0]>=512)PORTA|=0x01else PORTA&=~0x01// ch0 2.5V 이상이면 ON
      if(AVG[1]>=512)PORTA|=0x02else PORTA&=~0x02// ch1 2.5V 이상이면 ON
      if(AVG[2]>=512)PORTA|=0x04else PORTA&=~0x04// ch2 2.5V 이상이면 ON
      if(AVG[3]>=512)PORTA|=0x08else PORTA&=~0x08// ch3 2.5V 이상이면 ON
      if(AVG[4]>=512)PORTA|=0x10else PORTA&=~0x10// ch4 2.5V 이상이면 ON
      if(AVG[5]>=512)PORTA|=0x20else PORTA&=~0x20// ch5 2.5V 이상이면 ON
      if(AVG[6]>=512)PORTA|=0x40else PORTA&=~0x40// ch6 2.5V 이상이면 ON
      if(AVG[7]>=512)PORTA|=0x80else PORTA&=~0x80// ch7 2.5V 이상이면 ON
   }
}
 
 
 
 
 
#include <avr/io.h>
//
int main(void){
   unsigned int i,ch,SUM,AVG[8];
   DDRA=0xFF;
   while(1){
      for(ch=0;ch<8;ch++){
         ADMUX=0x40|chSUM=0;
         for(i=0;i<64;i++){ ADCSRA=0xD7while(!(ADCSRA&10)); SUM+=ADCW; }
         AVG[ch]=SUM>>6;
      }
      if(AVG[0]>=512)PORTA|=0x01else PORTA&=~0x01// ch0 2.5V 이상이면 ON
      if(AVG[1]>=512)PORTA|=0x02else PORTA&=~0x02// ch1 2.5V 이상이면 ON
      if(AVG[2]>=512)PORTA|=0x04else PORTA&=~0x04// ch2 2.5V 이상이면 ON
      if(AVG[3]>=512)PORTA|=0x08else PORTA&=~0x08// ch3 2.5V 이상이면 ON
      if(AVG[4]>=512)PORTA|=0x10else PORTA&=~0x10// ch4 2.5V 이상이면 ON
      if(AVG[5]>=512)PORTA|=0x20else PORTA&=~0x20// ch5 2.5V 이상이면 ON
      if(AVG[6]>=512)PORTA|=0x40else PORTA&=~0x40// ch6 2.5V 이상이면 ON
      if(AVG[7]>=512)PORTA|=0x80else PORTA&=~0x80// ch7 2.5V 이상이면 ON
   }
}

 

AVRstudio 높은 버전은 ADCW 대신 ADC 사용하면 됩니다. 

댓글 : 0

조회수 : 2,033

등록된 댓글이 없습니다.

게시물 검색

AVR 목록

게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전