회원가입 ID/PW 찾기
AA

Atmega16을 사용하고 있으며 다음과 같이 소스 코드를 간단하게 짜 보았습니다.

그런데 ADC값이 이상하게 나오더라구요~

무엇이 문제인지 좀 알고 싶습니다.

 

 

 

 

#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>


void PORT_init(void);
void ADC_init(void);
void UART_init(unsigned int baud);
void UART_Tx(unsigned int data);
unsigned char UART_Rx(void);

 

void PORT_init(void) // 포트초기화
{

}


void ADC_init(void)  // ADC초기화
{
 ADMUX=0xC0; // 내부 vref 사용(2.56V), ADC0
    ADCSRA=0x87; 
  
}

void UART_init(unsigned int baud)
{
 UCSRA=0x00; // Normal 모드
    UCSRB=0x18; // TX/RX enable
    UCSRC="0x06;  // no parity, 1bit stop, 8bit data
    UBRRH=(unsigned int)0;     //수신속도 Max 1M(bps)설정
    UBRRL=(unsigned int)baud;  //주파수 16Mhz에서 Max값(Error=0%)
}

void UART_Tx( unsigned int data )
{
 while (!(UCSRA & 0x20));
 UDR = data;
}

unsigned char UART_Rx( void )
{
 while (!(UCSRA & 0x80));
 return UDR;
}


void main(void)
{
 
 int adc_val;
 int i;

 PORT_init();
 ADC_init();
 UART_init(103);


 while(1)
 {
  adc_val=0;

  
  for(i=0; i<16; i++)
  {
  
  ADCSRA |= 0x40;
  
  while((ADCSRA & 0x10) ==0x00);
  
  ADCSRA |= 0x10;

  adc_val=adc_val+(ADCL + ADCH*256);
 
  }
 
 adc_val=adc_val/16;

 UART_Tx(adc_val);
 _delay_ms(1000);
 UART_Tx(' ');

 

 }
}

댓글 1
  • No Profile

    adc_val 은 10bit의 데이터 값이고, UART_Tx의 인수는  8bit 값이라서. 256 이상의 값은 깨질것입니다.

    따라서 상위 8bit만 읽어서 처리하시던지..

    아니면 UART_Tx를 두번던지시셔서 받아서 처리하시던지 해야합니다.

     

    UART_Tx(adc_val  >> 2);     // 상위 8bit ADC 값

     

    또는

     

    UART_Tx(adc_val  / 0x100);    //상위 2bit ADC 값

    UART_Tx(adc_val % 0x100); //하위 8bit ADC 값

     

    이렇게 처리하시는 게 바람직하겠습니다.

     

    참고로 8bit ADC 로만 처리하실경우 ADCSRA의 ADLAR비트를 1로 하여 상위 8비트만 읽으면 8bit데이터로 쓰시기 편합니다.

     

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
149 PADS HOT사용문의요~~ 오렌지 1042 2011.11.11
148 PADS HOT2005 버전 라이브러리 컨버터 있으신분..1 종나섹쉬 1087 2011.11.04
147 PADS HOTPADS 9.3 파일 공유 부탁드려요 naughty boy 1328 2011.11.04
146 PADS HOTPADS 9.3설치문의 다리미 1375 2011.11.01
145 PADS HOTReturn path 마모루 886 2011.10.25
144 PADS HOT사용문의~2 오렌지 1272 2011.10.12
143 PADS HOTpads 9.3 깔았는데..,null 폴더 계속 생겼요./! 시무스 2080 2011.10.07
142 PADS HOTorcad pads 설치 실행시 발생오류..1 후니다잉용 2416 2011.10.06
141 PADS HOT4층 LAYOUT호 Gerber파일을 생성하는 순서나 자료있나요?3 정상까지 가보자! 2987 2011.10.03
140 PADS HOT확장자 gb는 뭘로 열어야 하나요!?1 마모루 2031 2011.09.19
139 PADS HOTGerber data를 PCB Layout파일로 바꿀수 있나요?1 소주가이 1939 2011.09.06
138 PADS HOT패즈 라이센스 오류에 관해서 질문드립니다. 챠리스만 2021 2011.09.02
137 PADS HOTpads9.3 updata 파일이나 pads9.3.1 파일 정상까지 가보자! 3429 2011.08.31
136 PADS HOTPADS 9.3 Pin Wizards 관련 질문입니다.3 인서아빠 2352 2011.08.27
135 PADS HOT질문입니다~2 qweasd 1414 2011.08.26
134 PADS HOTPads 2007로 회로도를 완성하였습니다만..3 깡생깡사 1924 2011.08.22
133 PADS HOTPCB 파일에서 logic 으로 cirtcuit를 거꾸로 동기화 가능한지 알고 싶습니다. hihihohaha 1810 2011.08.21
132 PADS HOT작업폴더 지정하는 법?1 세빛 1728 2011.08.20
131 PADS HOTPADS 9.3.1자료가지고계신분 ?4 정상에서 2593 2011.08.18
130 PADS HOTpads 9.0.2 설치에 관해 문의 드려요 급합니다ㅠ.ㅠ 빡상후니 2253 2011.08.16
Prev 1 2 3 4 5 6 7 8 9 10 11 ... 14 Next
  • 사랑하고 사랑받는다는 것은 태양을 양쪽에서 쪼이는 것과 같다.
    - 비스코트
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.