MCLR pini output nasıl kullanabilirim

Başlatan safaka123, 29 Aralık 2016, 01:25:16

safaka123

LCD yi porta ile 8 bit kullanmam gerekiyor. MCLR pini datasheet e göre daima input görünüyor proteus output yapıyor ama 16f1827 gerçek devrede output yapmıyor.

LCD picbasic tanım sınırlamasından dolayı ardışık 8 bit kullanmam gerektiğini düşünüyorum. bundan dolayı porta yı tamamen kullanmam gerekiyor.

Yada  lcd databitlerini rastlansal seçebilme hakkım var mı. ASM olarak yada picbasic olarak tanımlamaları yapabilirmiyim.

örnek tanımlamam bu şekilde ( Farklı tanımlama yapılabilirmi? )
'******LCD TANIMLAMALARI******
DEFINE LCD_DREG     PORTA
DEFINE LCD_DBIT     0     
DEFINE LCD_EREG     PORTB
DEFINE LCD_EBIT     7   
DEFINE LCD_RWREG PORTB   
DEFINE LCD_RWBIT 6       
DEFINE LCD_RSREG    PORTB
DEFINE LCD_RSBIT    5   
DEFINE LCD_BITS     8   
DEFINE LCD_LINES    2   
DEFINE LCD_COMMANDUS 2000   
DEFINE LCD_DATAUS  100       

Teşekkürler.

ta3usl

#1
Merhaba,

MCLR pini sadece input olarak kullanılır. Sonuçta proteus simülasyon. Bazı olmayacak şeyleri yapabiliyor :) Uyarıları dikkatlice okuyup ona göre şekil vermek lazım. MCLR pini  output kullanılacak olsaydı üretici firma mutlaka datasheette belirtirdi diye düşünüyorum.

Kullandığınız LCD nedir bilmiyorum fakat, bazı lcd lerde 4 bit data pini yeterli oluyor.

DEFINE LCD_BITS     8    -->  satırı 8 bit / 4 bit seçimi için kullanılıyor.

DEFINE LCD_BITS     4  olarak değiştirirsen LCD yi 4 bit kullanabilirsin.

safaka123

bilgiler için teşekkürler 4 bit olarak çalışıyor.
haklısınız belki bir ümit diye araştırıyordum. datasheet sadece input olabilir diyor elektronik olarak kapı şekli bu şekilde olabilir fakat register 8 bit olarak değişiyor olabilir.
portb de kullansam 8 bit de çalışacak ama portb de RX pinini ve I2c pinlerini kullanmam gerekecek.bundan dolayı ihtiyaç oldu. Belki şöyle bir şey olabilir ümidiyle araştırıyorum. mclr portundan çıkış alınamasada porta registeri istediğimiz gibi değişebiliyorsa program başında porta registerinde (porta.5)  te ne varsa portb.0 da o olsun gibi bir port çiftlemesi yapabilirmiyiz. yoksa ütopik bir düşünce midir bu.

Bu da olmazsa mclr pini başka portda olan bir entegreye geçmem gerekebilir.



ta3usl

dediğin mevzu olabilir mi bilmiyorum fakat , anladığım kadarıyla senin ekstra pine ihtiyacın var :)  Farklı bir entegreye geçmen ne kadar zor bilemem . 74HC164 entegresiyle 2 x 16 LCD sürdüklerini görmüştüm. Mantığını bilmiyorum.  En azından üzerinde çalıştığın devrenin bir şeması olsaydı , diğer arkadaşlardan da farklı fikirler çıkardı.

safaka123

haklısın yeni entegre zamanı sanırım. Araştırmalarımda sonuç vermedi.
74164 fikri için teşekkürler ben hızlı olsun diye 8 bit kullanayım dedim. 32mhz de çalışıyorum LCD ye zaman fazla ayırmasın dedim.belki hız çok fazla artmayacak ama yapabilirmiyim diye düşünmüştüm. MCLR pini ayrı portda olan bir entegre kolaylıkla bunu yapacaktır.




mg1980

LCD için 8 pin kullanmak gereksiz diye düşünüyorum. O dediğiniz frekansa LCD ayak uydurabilir mi?  4MHz,8Mhz bu iş için yeter diye düşünüyorum. Port çoğullama konuları Ete hocanın ders notlarında var sanırım.

ete

MCLR pini yalnızca giriş kullanılır. Boşuna çıkış yapma arayışında olma. Yok öyle bir şey.
8 bit LCD kullanmakda nereden çıktı ? Gerekçeni merak ettim doğrusu. Bunun zorunluluğu olmaz.
4 bit de çalıştırmışsın zaten. Ya portA yı kullanmayacaksın ya 4 bit kullanacaksın yada data portunu shift registerden vermek gibi çok karmaşık bir yola sapacaksın ki bence daha fazla bacaklı bir işlemci kullansan daha akıllıca olurdu.
Bu konuda çok fazla tecrübede arama kimse senin gibi zorlanmamıştır. Alternatiflerden birini
Ete

safaka123

cevaplarınız için teşekkürler. dataları 2 kez 4 bit verince hızlı olamıyor düşüncesiyle başladı düşüncem. bazen hız yüzünden kafası karışıyor diye düşünüyordum define komutlarında gecikmeleri ayarlamaya çalışsamda yinede az da olsa ekran karışıyordu. önce porta ile 8 bit denedim proteus çalışınca devreyi gerçekleştirdim. fakat hiç bir yazı yoktu sonrasında mclr yi farkettim datasheet e baktığımda sadece input yazıyordu. bende başkası kullanabilmişmiydi diye araştırdım bir iki kaynak buldum ama ben çalıştıramadım. aklıma gelen registeri başka bir porta yönlendirme işi çözebilirdi diye düşündüm. araştırdım konuya dair bilgi bulamayınca buradan yardım istedim. bunu yapabilmek için entegre değiştirmek en kolayı belki oluyordur zor olsa da bir şeyler denemiş olurum dedim. Fakat başarılı olamadım. En azından bu konu kafamdan rafa kalktı.  Sanırım asm bilgim iyi olsa kendi port çıkışlarımı ayarlayıp yapabilirdim ama hazır kütüphane kolay kullanımlı olunca bu şekilde dezavantajları da oluyor.
32mhz de LCD için fazla olduğunu biliyorum. Fakat bazı videolar görmüştüm animasyon yapılıyordu 2x16 karakter ile bunu multiplekser gibi çalıştırıp yapabiliyorlardır dedim bu hızın bir sebebi de bu.

ete

32 mhz çalışma frekansı lcd nin 4 bit çlışmasında bile fazla gelen bir hızdır. Komut gecikmelerini gerektirir lcd tanımlama (define) komutlarına bakın içinde bu komutları görebilirsiniz. Şimdiye kadar hep lcd yi yavaşlatma eğilimi içinde oldum hızlandırma gereği hiç duymadım. Sorun varsa başka yerde aramak gerekir.
Unutmayın A portu 4 bit haricinde lcd çalıştırmak için belalı dır. Birde open collector A.4 pini varki lcd de kullanmak için pullup bağlamanız gerekir.
Ete

Powered by EzPortal