회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
314 PADS HOT질문입니다~2 qweasd 1414 2011.08.26
313 PADS HOTPads 2007로 회로도를 완성하였습니다만..3 깡생깡사 1924 2011.08.22
312 PADS HOTPCB 파일에서 logic 으로 cirtcuit를 거꾸로 동기화 가능한지 알고 싶습니다. hihihohaha 1810 2011.08.21
311 PADS HOT작업폴더 지정하는 법?1 세빛 1728 2011.08.20
310 PADS HOTPADS 9.3.1자료가지고계신분 ?4 정상에서 2593 2011.08.18
309 PADS HOTpads 9.0.2 설치에 관해 문의 드려요 급합니다ㅠ.ㅠ 빡상후니 2253 2011.08.16
308 PADS HOT알려주세요1 킁킁 1352 2011.08.11
307 Allegro & OrCAD HOTOrcad 16.3 설치 파일 구할수 있나요?3 cjhwa11 2821 2011.08.09
306 PADS HOTpads 9.3버젼 설치파일 구할수 있나요?1 정화 1846 2011.08.09
305 PADS HOTPADS9.3 윈도우xp 에서도 사용가능한가여?7 쉼터 2967 2011.08.07
304 PADS HOTwin7 에 pads9.3 사용하시는 고수님들 도와주세요1 행복한 인생 2544 2011.08.04
303 PADS HOTpads 9.3 라이브러리 관련 질문~1 고국천왕 2127 2011.08.01
302 PADS HOTpads 9.2버젼 Crack파일 있으신분1 파도^^; 3230 2011.07.27
301 PADS HOT초보자입니다. 하늘사랑73 2241 2011.07.26
300 Allegro & OrCAD HOT고수님들의 도움좀 바랍니다.1 하늘사랑73 1693 2011.07.25
299 PADS HOTPADS 공유 해 주실분 혹시 없나요 ? 킁킁 1508 2011.07.25
298 PADS HOT9.3작업중 마우스가 약간 느려서 불편하던데1 파도^^; 1704 2011.07.22
297 PADS HOT이 에러가 왜 나는건가요 ??? 킁킁 1332 2011.07.22
296 PADS HOTpads9.0 설치방법 킁킁 2949 2011.07.22
295 PADS HOTPads 2007 Patch 있으신분 파도^^; 2062 2011.07.21
Prev 1 ... 12 13 14 15 16 17 18 19 20 21 ... 32 Next
  • 말을 많이 한다는 것과 잘 한다는 것은 별개이다.
    - 소포클레스
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.