18f45k22 adc hakkında

Başlatan oguztkn, 21 Temmuz 2019, 19:07:05

oguztkn

Merhaba,

Konuyu hortlatacağım ama yeni konu açmak istemedim. 18f45k22 adc kullanmaya çalışıyorum.
RB0/AN12
RB1/AN10
RB2/AN8
RB3/AN9
RD4/AN24
RE2/AN7
bu bacaklardaki analog girişler için
TRISA=0
TRISB=%00001111
TRISC=%11000000
TRISD=%00010000
TRISE=%00000100

ANSELA=%00000000
ANSELB=%00001111
ANSELC=%11000000
ANSELD=%00010000
ANSELE=%00000100:

ADCON0=%00000001
ADCON1=%10000000
ADCON2=%10111011

DEFINE ADC_BITS 10  
DEFINE ADC_CLOCK 3 
DEFINE ADC_SAMPLEUS 100 

PMD1=%11011111
PMD2=%00001111

Ayarlar için bu kodları kullanıyorum.

Ana döngüde ise
Adcin 19,pot1  
Adcin 24,pot2
Adcin 12,pot3
Adcin 10,pot4
Adcin 8,pot5
Adcin 9,pot6
Adcin 7,pot7
Adcin 18,pot8
okumaları bunlar ile yapıorum. lcd ye de yazdırıyorum. Asıl sorum

ADCIN 24,pot2  bu komut isiste
"Write to ADCON0 register selects ADC channel 28- there is no such channel on the PIC18f45k22 device" hatası verdiriyor. Neyi yanlış yapıyorum acaba ?

Hattuşa

adc okumaların böyle peş peşemi? while adcon.0.1 ==1 gibi adc çevriminin bitmesini beklemeniz daha sağlıklı olacaktır. ayrıca yazmış olduğunuz hatanızı translatede çevirdiğim zaman
Alıntı YapADCON0 yazıcısına yaz, ADC kanalını 28 seçer - PIC18f45k22 cihazında böyle bir kanal yoktur
diyor sanırım registerlerde bi hata yaptınız

oguztkn

Hocam ,normalde aralarında çevrim bitti mi sorgusu ve eğer kesme kullanmayacak isem az da olsa bir bekleme koyuyorum. Ama burada Suanki Adcon0'ı değiştirmeden adcin 24 komutunu kaldırırsam sorun kalmıyor.  Normal çalışıyor , anlayamadım bende?

ete

Basic tüm bekleme ve seçiim işlemlerini otomatik yapıyor hiç birisine gerek yok bence.
Sorun başka bir sorun gibi gözüküyor. Şöyle düşünüyorum ne olabilir diye bir şey bulamıyorum açıkçası. Zira hata mesajına bakılırsa seçim işlemi kanal 28 i seçiyormuş gibi gözüküyor ve pic de bu kanal yok diyede hata veriyor. Hiç birisi doğru değil. Ancak Basic bazen başka bir yanlışı farklı bir yanlış gibi empoze edebiliyor. Bu nedenle yapılacak tek şek programı alıp incelemek ve bir iki deneme yapmak. Programı koyarsan denerim.

Yoksa komut takımında hiç bir hata yok. Hata yok derken Pot2 isimli değişken tanımlanmamış bile olabilir. Bu hatayı verilen hataya çeviriyor olabilir basic. Bu nedenle programın tamamı ve simulasyon devresi gerekiyor incelemek için.

Ete

oguztkn

Alıntı yapılan: ete - 22 Temmuz 2019, 11:20:38Basic tüm bekleme ve seçiim işlemlerini otomatik yapıyor hiç birisine gerek yok bence.
Sorun başka bir sorun gibi gözüküyor. Şöyle düşünüyorum ne olabilir diye bir şey bulamıyorum açıkçası. Zira hata mesajına bakılırsa seçim işlemi kanal 28 i seçiyormuş gibi gözüküyor ve pic de bu kanal yok diyede hata veriyor. Hiç birisi doğru değil. Ancak Basic bazen başka bir yanlışı farklı bir yanlış gibi empoze edebiliyor. Bu nedenle yapılacak tek şek programı alıp incelemek ve bir iki deneme yapmak. Programı koyarsan denerim.

Yoksa komut takımında hiç bir hata yok. Hata yok derken Pot2 isimli değişken tanımlanmamış bile olabilir. Bu hatayı verilen hataya çeviriyor olabilir basic. Bu nedenle programın tamamı ve simulasyon devresi gerekiyor incelemek için.

Ete

Hocam değişkenleri kontrol ettim sorun yok idi. Bir daha incelememe rağmen bir hata göremedim. Şemayı ve kodları ekte ekliyorum size zahmet deneyebilirmisiniz acaba ?

ete

Çok uğraşmama rağmen bu sorunu aşamadım maalesef. Sorunun derleyiciden kaynaklandığını düşünüyorum. Çünki Kanal 24 yerine Kanal25'i aktif edip oradan giriş yaptığımda sorunsuz çalışıyor. Ama maalesef 24. kanalı 28 gibi görüyor derleyici ve 28 de olmadığı için hata veriyor.
Üstelik ADCIN komutunu kullanmadan
adcon0=%01100001
pauseus 8
adcon0.1=1
while adcon0.1=1:wend
ADRESH=pot2.byte1
ADRESL=POT2.BYTE0
şeklinde registerler üzerinden kanal 24 ü okumaya çalışıncada aynı hatayı veriyor.
Sorunu anlayamadım maalesef. Bana kalırsa PORTD.4 yerine PORTD.5 üzerinden Kanal 25 i kullan olsun bitsin.
Bu arada programın doğru register ayarları ile ve 16 Mhz lik dahili osc ile çalıştırdım
İlişikte veriyorum. Gerekirse değiştirebilirsin.
Ete

oguztkn

anladım hocam. Sanırım programın bug'u bana denk geldi. Herhalde bir güncelleme ile düzeltilir yada PBP3 te düzelmiştir belki.

Doğru sigorta ayarları içinde teşekkür ederim.

ete

Ben BBP3 de deniyorum zaten. Ya devam edegelen bir sorrun var yada sorun İşlemcinin INC dosyasındaki register adreslerindedir. Bu konuda düzeltme varrmı diye araştırmak gerekir.

Ete

Powered by EzPortal