16f876 adc ölçüm hatası

Başlatan exper, 10 Mayıs 2012, 15:55:36

exper

arkadaşlar aşağıdaki yazılımda

0.2 ile 0.9 volt arasını ölçen devre yaptım
(vref- yi) pot ile 0.2 volt a  ( vref +) pot ile 0.9 volta ayarladım
simulasyon doğru  çalışıyor ama devrede girişten 0 volt bile versem 0.9 volt okuyor
düşük voltaj aralığını 10 bit ölçemezmiyim..........teşekkürler.

Device 16F876
     XTAL = 4 'MHZ
  @CONFIG_REQ
  @__CONFIG  XT_OSC  & PWRTE_ON & WDT_OFF & CP_OFF &  BODEN_OFF  &  LVP_OFF 
Declare ADIN_RES 10       ' 10-bit result required
  Declare ADIN_TAD    FRC      ' RC OSC chosen   
  Declare ADIN_STIME 50     ' Allow 50us sample time
                      DelayMS 300
   ADCON1 =%10001111               ' 1111 D D D D VREF+ VREF- D A     AN3 AN2 1/2   

TRISA = %00001111         
  TRISB = %00000000
  TRISC = %00000000

   Dim I As Byte
   Dim ADCVOLT  As Word
   Dim HAMVOLT As Word
   Dim VOLT As Float

While  1 = 1
                 HAMVOLT =0
                        For I =1 To 60                                 
                                 ADCVOLT = ADIn 0                     
                                While   ADCON0.1 =1   : Wend      'ÖLÇÜM BİTİMİNİ BEKLE 
                                HAMVOLT = HAMVOLT + ADCVOLT
                                ADCON0.1  = 0 
                        Next
                             HAMVOLT = HAMVOLT /60
                            VOLT = HAMVOLT * 0.9  /1023
           Print $FE,$80, DEC3 VOLT, " Volt   "
      delayms 500
wend

emregenc

#1
kolay gelsin
kullandığın dil proton ise 10 bitlik adc tanımlamada 16 bitlik ölçüm yapıyor  gibi
10 bitlik ölçümü şu şekilde yapıyor proton 10 bitlik tanımlama registerin high kısmından başlayarak yazıyor
örnek ölçüm sonucu


1010101010000000 son  altı sıfır 16 bitlik gibi ölçümden dolayı
kurtulmak istiyorsan en basit yöntem yaptığın ölçümü 64 e bölmek
sonra ölçüm sonuçlarını 10 bit üzerinden işleyebilirsin