회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
58 ECAD 아무거나 HOT로드셀을 이용한 회로 설계에대해 궁금합니다.1 삼이ㅋ 979 2012.10.27
57 ECAD 아무거나 HOTorcad 16.3 설치 중 에러1 patto 3488 2012.09.29
56 ECAD 아무거나 HOTorcad 설치 질문인데요 하하하하히 532 2012.09.17
55 ECAD 아무거나 orcad usb 관련 질문인데요 하하하하히 289 2012.09.08
54 ECAD 아무거나 HOTMentorGraphics (pads) 실행시 에러가 뜨는데요ㅠ3 하하하하히 2662 2012.08.06
53 ECAD 아무거나 HOT전자 캐드 기능사 이론 시험 자료 가을비 529 2012.06.25
52 ECAD 아무거나 HOT패드스택 만들때 납이 묻을 패드크기 지정?? sinwho 546 2012.06.09
51 ECAD 아무거나 HOTorcad 16.3 설치중 에러질문입니다.1 조신율 720 2012.03.27
50 ECAD 아무거나 HOTPCB STACK UP에 대해 질문드립니다.1 라르크유키 1679 2012.02.27
49 ECAD 아무거나 Layout Guideline 질문드립니다.1 김진효 330 2012.01.31
48 ECAD 아무거나 HOTCAM350 TOOL공유 할수있나요1 정상까지 가보자! 4593 2012.01.12
47 ECAD 아무거나 초보입니다.. 업무상 필요한 부분이여서요 빠른 답변 부탁 드려요 ^^;;1 멜쉬 341 2012.01.10
46 ECAD 아무거나 HOTpmc/xmc 질문입니다. 마모루 1032 2011.10.04
45 ECAD 아무거나 HOTStandard PCB Layer Stack Up 정상까지 가보자! 1354 2011.10.03
44 ECAD 아무거나 HOTpads 9.2 설치 오류 문의 조필버그 1939 2011.09.09
43 ECAD 아무거나 HOT회로도 제작조언 및 제작부탁요청요!4 쏘주한잔 6086 2011.05.03
42 ECAD 아무거나 HOT9.3 설치방법에 관한 문의 Jux 1805 2011.04.21
41 ECAD 아무거나 HOT9.3VERSION에서 DxDEDIGNER동작 하나요?1 정상에서 1649 2011.04.04
40 ECAD 아무거나 HOTPads2007과 pads9.2의 사용법이 많이 다른가요?3 릭정 3756 2011.01.25
39 ECAD 아무거나 HOTwin7과 Artwork 프로그램(Pads, Cadstar등)간의 호환성 어떤가요?1 릭정 2864 2011.01.25
  • 사랑은 두 사람이 자기중심주의적이다.
    - A.D.샬
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.