iyi günler picproje ailesi 18f87k22 nin adc aktif edip veri okuyamadım proteusda hata msj ile karsılasıyorum hatamı göremedim yardımcı olursanız sevinirim.
void main(){
setup_adc(ADC_CLOCK_DIV_32|ADC_TAD_MUL_4);
setup_adc_ports(sAN0|VSS_VDD);
setup_comparator(NC_NC_NC_NC);
..................
while(true){
ham=input(pin_a0);
set_adc_channel(0);
delay_us(30);
ham=Read_adc();}}
(https://i.hizliresim.com/kWYkdy.jpg)
Bir fikri olan yok mu arkadaslar :)
Trisden adc girisini input. Yapmayi deneyin
Sadogan hocam input yaptım ve ne yaptıysam resimdeki hatayla karşılasıyorum bir yolunu bulamadım nerde hata yaptıgımın.
Problem Referans ayarlarından kaynaklanıyor gibi. Setup_vref komutunu bir inceleyin.
Sorunun kaynağı kesinlikle ADC ref voltajı. + ref voltajı 0V diyor bağıra bağıra. İşlemcinin data sheet'ini açarsanız ADCON1 registerinin bu işi ayarladığını görebilirsiniz. Register bitlerine bakacak olursak;
Bit7-6 Trigger Select yapıyor. Bilmediğim bir özellik Ancak sanırım RTCC seçilmeli ve bu bitler %11 yapılmalı
Bit 5-4 00 verilerek VDD seçilmeli (ADCON1=%1100...... oldu)
Bit 3 0 verilerek VSS negatif voltaj ref olarak seçilmeli (ADCON1=%11000....)
Bit2-0 Analog negatif kanal seçim bitleri. 000 verilerek negatif tarafı VSS ye bağlanmış oluyor. Böylece tek kanal ADC ölçümü yapabiliyorsunuz. Sonucta ADCON1 değeriniz %11000000 şeklinde verilmelidir.
Ete
@ete hocam öncelikle tsk ederim verdiğiniz bilgiler için ref seçim işini asagıdaki komut yapmıyor mu vss_vdd demişim.
setup_adc_ports(sAN0|VSS_VDD);
Bana kalırsa o komut pek çok standart pic için seçim yapar ama bu özel bir işlemci. Bunda çalışırmı emin değilim ve zaten çalışmadığıda görülüyor öyle değilmi.
Ete
output_float(PIN_A1);
ADC pinin hangisi ise ınu yaz setup_adc den sonra.
Tşk ederim arkadaşlar problem AVDD pinini +5v baglamadıgım içinmiş bu pic ile ilk defa ugrasıyorum acemilikler oluyor herkeze çok tşk ederim :)