회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
3 머신러닝, AI & 알고리즘 HOT오목 게임 알고리즘3 새로운하늘 3457 2010.03.29
2 머신러닝, AI & 알고리즘 HOT지하철 최단거리 알고리즘은?2 지워나 2855 2008.06.20
1 머신러닝, AI & 알고리즘 HOT순차 프로그램에 대한 간단한 알고리즘과 재귀 알고리즘의 속도 테스트 - by 아크마7 아크마 3056 2007.08.08
  • 우유부단한 것만이 습관으로 되어 있는 사람보다 더 비참한 사람은 없다
    - 제임스
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.