Haberler:

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

Ana Menü

adc modulu yardım

Başlatan spexx, 11 Ağustos 2010, 02:30:43

spexx

merhaba arkadaslar bi proje hazırlıyorum bana bir tane anolog cıkıs lazım diger cıkıslarıda digital cıkıs olarak kullanmak gerekiyor
yani a portunu digital cıkıs olark e portunuda analog cıkıs olarak kullanmak gerekiyor bunu nasıl yapabilirim jal'de  baska giriş çıkış pinim kalmadı mecbur a portunu kullanmak gerekiyor please yardım  :-\

parda

Yazdığınız mesajı göndermeden önce birkez okudunuzmu acaba? neyse;

Kullandığınız PIC in (sizden başka kimse bilmiyor) veri sayfasında hangi pin in analog GİRİŞ, hangi pin in dijital olarak kullanılabileceği açıkça yazıyor. Bu yönlendirmeninde nasıl yapılacağı register ayarları da açıklanmış. JAL başlığı altında register lerin nasıl değiştirileceğine hatta analog giriş ile ilgili örnek olduğundan da kuşku yok.

Probleminizi daha açık ve somut olarak yazarsanız çözüm ve çözüme ulaşma süreniz okadar kısalır diye düşünüyorum.

Daha açık olmak gerekirse veri sayfasındaki bilgilerimi anlayamadınız, yoksa bu bilgiler doğrultusunda JAL da kodlama mı yapamadınız.

Esen kalın.
Bildiğim tek şey, hiç bir şey bilmediğimdir.

spexx

16f877a kullanıyorum A ve E portu analog giriş cıkış ama bana sadece 1 kanal analog giriş lazım digerlerini digital olarak kullanmak istiyorum ve bunu jal programında bir türlü yapamadım yardımcı olursanız çok yardımcı olmuş olacaksınız tşk

picmanya

yazdığınız kodları görebilirsek daha iyi yardımcı olabiliriz.
tris,adpcfg,adcon register-bit gibi ayarlamaları ve adc okuma register ayarlarını nasıl yaptınız görmemiz lazım.

spexx

sorun orda saten hazır include adc dosyasını kullandım diger türlüde soyle bi kısa program atıyım size bu şekilde yaptım başarısız oldu

include 16f877_4
include jlib
include hd447804
include jmath

ADCON0 = 0xC5
ADCON0_ADON = high               
delay_1uS( 20 )                     
ADCON0_GO= high
ADCON1 = 0x1E
hd44780_clear
port_a = all_output
port_e = all_output
forever loop
port_a = 0xff
port_e = 0xff
end loop

spexx

siz bana yazdıgım şekilde kısaca yazarmısınız acaba
E portunu anolog giriş A portu digital giriş 

fahri-

#6
A0 portu analog giriş diğerleri digital olarak ayarlanabiliyor.

spexx

tamam şimdi datasheet baktımda adcon0 0.  ve  2. biti 1 yaptıgımızda analog girişlerin hepsi aktif oluyor herhalde adcon1 registerinina 0x0E yaptıgımızda dediginiz gibi a0 anolog digerleri digitalmi olucak hocam burda kilitlendim kaldım bi program olarak yazarmısın ?

parda

17 saat sonra olsada verisayfasına bakmanız güzel :)

Yazdıklarınız doğru;
ilk önce  ADCON1 i 0x0E yapın böylece sadece RA0 Analog gerisi dijital olsun unutmayın 7. bitten (ADFM) dolayı sonuç sola yaslı olacak

sonra ADCON0 ı 0x05 yapın 0. bit ADC modulu aktif yapar 2. bit ise adc çevrimini başlatır.
ADCON0 da 5-3 bitler adc girişi ni belirler 000 RA0 dır size uygun olan, 7 ve 6. bit ADC çevrim süresiyle (ölçme süresi) alakalı 00 en hızlı hali

bu noktada ADCON0 ın 2 biti 0 olana kadar bekleyin bu biti zaten siz 1 yapmıştınız ve adc çevrimini başlatmıştınız şimdi adc çevrimi bitince işlemci bu biti otomatik olarak 0 yapar ve sizde ADC çevriminin bittiğini yani artık sonucu okuyabileceğiniz anlamına gelir.

sonucun okunması da güzelce anlatılmış ve hatta güzel şekillerde var sola yaslı ne demek sağa yaslı nedemek hepsi yazıyor.
Denemeye devam..

şimdi neden size kod yapıp göndermediğimide yazayım
1. JAL bilmiyorum
2. JAL ile bu işin nasıl yapıldığı örnek kodları bu sitede ve google kolayca bulunabilir.
3. En önemlisi kodu veri sayfasına bakarak siz yazarsanız bundan sonra her hangi bir pic ile ADC okuma sorununuz kalmaz hatta başka bir işlemci için bile :)

Kolaylıklar


Bildiğim tek şey, hiç bir şey bilmediğimdir.

spexx

sagolun tşk ederim hemen denicem şimdi

spexx

şefim assembler olarak yazdım ama yine olmadı
BSF     H'03',5   -- bank 1 e gectım
MOVLW   H'0E'   -- 0E verisini yukledim
MOVWF   H'9F'   -- aDCON1 RGİSTERİNE
BCF   H'03',5  -- BANK0 A GECTİM
BSF   H'1F',0   -- ADCON0   0 BİTİ 1 YAPTIM
BSF   H'1F',2  -- -- ADCON0   2 BİTİ 1 YAPTIM
bi bakarmısın ASM 'den anlıyosun

parda

Ne yazıkki asm ile aram yok hatta yaklaşık 2 yıldır PIC de kullanmadım;
Forumun ARAMA özelliğini kullanın..

mesela;
https://www.picproje.org/index.php/topic,5722.msg34204.html#msg34204

Özellikle @SpeedyX gönderdiği örneği inceleyin

Kolaylıklar
Bildiğim tek şey, hiç bir şey bilmediğimdir.