회원가입 ID/PW 찾기
AA

msp430f1611을 사용하고 있는데 ADC에서 읽어들인 값하고 직접 테스터기로 찍은 값이 달라요.

왜 그런가요?

그리고 책에 Nadc = 4095 * Vin - Vr-/Vr+  - Vr-  이게 무엇을 의미하는 지 궁금합니다..

 

P6SEL = 0x01;

 

void adc_init()
{
 ADC12CTL0 = ADC12CTL1 = 0;

 /** must be ENC = 0 **/
 ADC12CTL0 |= ADC12ON;         //ADC core enable. (consumes power)
 //ADC12CTL0 |= REFON;         // internal reference voltage on
 //ADC12CTL0 |= REF2_5V;         // reference generator voltage 2.5V (or 1.5V). REFON must be set.
 //ADC12CTL1 |= CSTARTADD0;      // conversion memory register start adress[0~3] (ADC12MEM0~ADC12MEM15)
 
 ADC12CTL1 |= ADC12SSEL0; // ADC12CLK = ACLK. ADC12 clock source - 00:ADC12OSC (consumes power), 01:ACLK, 10:MCLK, 11:SMCLK
 //ADC12CTL1 |= ADC12DIV0; // ADC12 clock divider[0~2]  - divide by 1~8
 
 ADC12CTL1 |= SHP;         //ADC12 Pulse Sample Mode (or Extended Sample mode)
 ADC12CTL0 |= SHT01 | SHT00; // 32 ADC12CLK cycles sampling. SHT1x, SHT0x - sample and hold time. only for when SHP =1. 
 //ADC12CTL0 |= MSC;         // Multiple sample and conversion. only for sequence or repeated modes.(ref. CONSEQx)

 //ADC12CTL1 |= SHS0 | SHS1; // Sample-and-hold source - 00:ADC12SC bit, 01:TA1, 10:TB0
 /*******************/

 //ADC12CTL1 |= CONSEQ0 | CONSEQ1; // ADC12 conversion sequence select (00:single channel and conversion, 01:sequence channel, 10:repeat single channel, 11:repeat sequence of channels)
 //ADC12CTL0 |= ENC;         // ADC12 Enable Conversion
 //ADC12CTL0 |= ADC12SC;         // ADC12 start conversion
}


u16 adc_convert(u08 adc_channel)
{
 u16 adc_result;
       

 /** must be ENC = 0 **/
 ADC12CTL0 &= ~ENC;
 switch (adc_channel)
 {
  case 0 :
   ADC12MCTL0 = INCH_0; break;
  case 1 :
   ADC12MCTL0 = INCH_1; break;
  case 2 :
   ADC12MCTL0 = INCH_2; break;
  case 3 : 
   ADC12MCTL0 = INCH_3; break;
  case 4 :
   ADC12MCTL0 = INCH_4; break;
  case 5 :
   ADC12MCTL0 = INCH_5; break;
  case 6 :
   ADC12MCTL0 = INCH_6; break;
  case 7 :
   ADC12MCTL0 = INCH_7; break;
  case 10 :
   ADC12MCTL0 = INCH_10; break; // temperature diode
 }
 /*******************/

 ADC12CTL0 |= ADC12SC + ENC; // SHI = 1
 ADC12CTL0 &= ~ADC12SC; // SHI = 0
 // wait until the conversion completes; ADC12BUSY?
 while (ADC12CTL1 & ADC12BUSY);
 ADC12CTL0 &= ~ENC;
 
 // 12 bit data mode
 adc_result = ADC12MEM0;
  
        
 return(adc_result);
}

                                      이렇게 해서 값을 읽어 들인값하고 테스터기로 찍어보면 나온값하고 어떻게 비교를 해야 하나요..위에 공식으로 적용을 해야하는지..   

전압은 0.6V가 나오는데 위에 대로 읽어 들인값은 744 값이 나옵니다.. 

전압인가는 5V를 넣어주었고..  

댓글 1
  • No Profile

    Nadc = 4095 * (Vin - Vr- ) / (Vr+ - Vr- ) 공식을 적용하여 값을 환산해야 입력된 전압 값을 알 수 있습니다. 

    4095 는 ADC가 12BIT로 2^12 의 Resolution을 갖기 때문에 변환 가능한 값의 범위가 0 ~ 4095 이고 , 그 최대 값을 나타내는 것 입니다.

    Vr- 는 마이너스 기준 전압 (보통 0v) , Vr+는 플러스 기준 전압 ( 보통 CPU 전원 3.3V ) 입니다.

    따라서 공식을 다시 쓰면 Nadc = 4095 * Vin / 3.3V 이 됩니다.

    Nadc = 4095 * 0.6V / 3.3V = 744

    더 예를 들어 보면

    입력 전압이 0V 이면 AD 값은 0 ,

    입력 전압이 1.65V 이면 AD 값은 2047

    입력 전압이 3.3V 면 AD값은 4095 가 됩니다.

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

search
번호 분류 제목 글쓴이 조회 수 날짜
106 펌웨어 & 코딩언어 객체지향프로그래밍4 끼르 373 2017.06.19
105 펌웨어 & 코딩언어 적외선 센서에 대한 질문입니다.3 jaemi2010 354 2016.02.25
104 펌웨어 & 코딩언어 구조체 포인터 캐스팅??1 기다려줄래 324 2015.07.10
103 펌웨어 & 코딩언어 matlab에서 작성된 m file을 c++로 변환하고 싶습니다.1 마린스토리 296 2014.04.28
102 펌웨어 & 코딩언어 HOTC언어로된 MPPT제어 프로그램 Code Vision 으로 변환하기 찰떡젤리 597 2014.04.21
101 펌웨어 & 코딩언어 HOTC 명령어 좀 상세히 알고 싶습니다1 jsp 413 2014.04.03
100 펌웨어 & 코딩언어 HOT피보나치 수열..2 aNitMotD 565 2013.10.30
99 펌웨어 & 코딩언어 HOT1D FEM coding 문제 ..원하는 답이 안나와요 수치해석미쵸 523 2013.09.29
98 펌웨어 & 코딩언어 HOTPIC 16F628A와 CCSC 기반의 프로그래밍 질문입니다. 제발 도와주세요ㅠㅠ 신천동주민 493 2013.09.24
97 펌웨어 & 코딩언어 HOT비주얼베이직 연산 및 줄바꿈에 대한 질문입니다.1 원할머니보고쌈 692 2012.11.07
96 펌웨어 & 코딩언어 HOTc언어 질문인데요..3 하하하하히 410 2012.09.10
95 펌웨어 & 코딩언어 HOTC언어제어3 tbwnaoslwj1 661 2012.08.09
94 펌웨어 & 코딩언어 HOTmatlab 질문입니다.. 소다수1 423 2012.06.06
93 펌웨어 & 코딩언어 HOT-(C언어(함수호출)로 만든 크리스*마스*트리*프로그램)-1 리종순2 1482 2011.12.14
92 펌웨어 & 코딩언어 HOT외부 SRAM 컨트롤하는 것좀 도와주세요.1 쩡무 1389 2011.11.15
91 펌웨어 & 코딩언어 HOTunikey program 수정 jjhuem 1135 2011.10.11
90 펌웨어 & 코딩언어 HOTAtmega128에서 Reset 하는 방법 중 궁금한 점이 있습니다!!!4 공돌이의꿈 3171 2011.06.21
89 펌웨어 & 코딩언어 HOTC언어랑 matlab의 차이?1 약곰탱이 3534 2011.06.02
88 펌웨어 & 코딩언어 HOTVHDL 전가산기 설계 질문입니다. 나트륨 3007 2011.03.26
87 펌웨어 & 코딩언어 HOTC 배열이용해서 엑셀 데이터 끌어오는 방법???2 꼬꼴리 2131 2011.03.24
  • 훌륭한 삶에는 세 가지 요소가 있다. 즉 배우는 일, 돈버는 일, 무엇인가 하고 싶은 일.
    - 몰리
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.