회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
145 Allegro & OrCAD HOTorcad 16.5 버젼 사용중인데..한글매뉴얼있으신분 ㅠ1 한준혁 2671 2012.11.28
144 Allegro & OrCAD HOT버전16.5에서 netlist시 fomatters >> pads2k.dll 선택항목 부재1 뽀리 1141 2012.11.01
143 Allegro & OrCAD HOTorcad 16.5 license manager 설치가 안되네요 ..ㅠ1 C_o 2409 2012.10.26
142 Allegro & OrCAD HOT(그려져 있는)orcad 회로에 라이브러리 복사 하기와 회로 복사 하는 방법 아시는분 ?1 천년미르 907 2012.10.04
141 Allegro & OrCAD HOTmentor -> OrCAD PCB Editor TSP 555 2012.09.24
140 Allegro & OrCAD HOTORCAD초보인데요ㅠㅠ 고수분들 ORCAD좀 질문할게요ㅠ1 하하하하히 2571 2012.09.02
139 Allegro & OrCAD HOTcadence allegro 크랙 파일 찾습니다.. 쉬리 810 2012.08.28
138 Allegro & OrCAD PCB editor는 빈페이지 같은거 없나요?1 아둘란 274 2012.08.17
137 Allegro & OrCAD HOTOrCAD 10.x version layout 관련 질문입니다..2 열혈공학도 601 2012.08.14
136 Allegro & OrCAD HOTOrCAD 9.3 찾고있습니다~~!!4 가을비 469 2012.06.21
135 Allegro & OrCAD HOTOrCAD 16.3 버전 크랙버전좀 보내주세요. 부탁드립니다.1 물어봐 4246 2012.05.15
134 Allegro & OrCAD HOTorcad16.3 소자 베타값 및 파라미터 값 설정에 대한 질문 당근이초소 692 2012.03.26
133 Allegro & OrCAD HOTOrcad 16.0 SHooTERS 설치법 질문2 메탈광 3324 2012.01.04
132 Allegro & OrCAD HOT부품핀에 패턴 연결에 대해 문의드립니다.1 start 957 2011.12.06
131 Allegro & OrCAD HOTpart를 수정하여 사용할수있는 방법?1 정상까지 가보자! 886 2011.11.20
130 Allegro & OrCAD HOTCapture CIS의 "Place database parts" 실행 시 나타나는 오류?? 시드라인 1888 2011.11.05
129 Allegro & OrCAD HOT윈7을 사용해서 10.5에서..1 카나데 1169 2011.10.29
128 Allegro & OrCAD HOTOR_CAD 레이아웃 치수보조선2 천상에서 2019 2011.09.17
127 Allegro & OrCAD HOTusb 3.0단자를 orcad로 그려 보려고합니다. 제이콥 1764 2011.09.06
126 Allegro & OrCAD HOTwindows7 으로 오늘 교체하고 orcad16.2 설차 방법 문의11 빼빼로 5819 2011.09.06
Prev 1 2 3 4 5 6 7 8 9 10 ... 12 Next
  • 걱정은 인생의 적이다.
    - 셰익스피어
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.