Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

18f46k22 vref kullanmak

Başlatan ido2323, 15 Şubat 2015, 20:35:01

ido2323

Hayırlı akşamlar 18f46k22'nin vref özelliğini kullanarak ADC yapacağım external yapınca sıkıntısız çalışıyor fakat internal bi türlü çalışmadı gitti hep 1024 de kalıyor, acaba bi yolu var mı?

movlw b'11110000'
movwf VREFCON0

MOVLW b'00001010'
MOVWF ADCON1



serdararikan

ismini hatırlamıyorum ama dahili reeferans gerilimini ayarlayan bir register daha var.onu da ayarlaman lazım

JOKERAS

Selam,

Pozitif İnternal Vref için  PVCFG bit kombinasyonu <3:2> 00  olmalı.

MOVLW b'00000000'
MOVWF ADCON1

Eğer Vref'ı FVR ile  yapmayacaksanız bu koda gerek yok!
movlw b'11110000'
movwf VREFCON0

Örnek C kodu.
void main(void) {
   
    unsigned int AdcVal = 0;
     
    ANSELAbits.ANSA0 = 1;       //RA0 Analog giriş,default lojik 1'dir zaten.
    TRISAbits.TRISA0 = 1;        //TRIS DIR giriş.
    ADCON2bits.ADFM = 1;       //Sağa dayalı.
    ADCON2bits.ADCS = 0x07; //Adc clock çevrim hızı, FRC (Fast RC osilatör).
    ADCON2bits.ACQT = 0x07; //Adc Acquisition time (Hold kap kazanç zamanı)
    ADCON0bits.ADON = 1;      //Adc modül aktif.

    while (1) {

        ADCON0bits.CHS = 0;                                                      //Adc kanal seçimi, Kanal  0 (RA0)
        ADCON0bits.GODONE = 1;                                              //Adc Start (örnekleme)
        while (ADCON0bits.GODONE);                                        //Adc örnekleme bitene kadar bekle,bitince otomatik lojik 0 olacak.
        AdcVal = (unsigned int) (ADRESH << 8) + ADRESL;     //Adc 10-bit maniplasyonu.

        Makul süre bekleme ekleyin,özellikle multi kanal adc okumalarda önem arzeder.
    }
}

ido2323

iyide aşşağıdaki tanımlamayı kullanıp ref voltajı 4.096v yapacağım, o nasıl olacak?
"A/D VREF+ connected to internal signal, FVR BUF2"