Merhaba; 16F26K22 ile 64Mhz de çalıştırmak istiyorum. alttaki kodlar bunun için doğrumudur. Ayrıca Portb.4 pini giriş olarak çalışmıyor dahili pull-up dirençleri aktif diğer portblerde pull-uplar aktif olarak çalışıyor sadece pb4 çalışmıyor galiba pin bozuk. kodlarda bununla ilgili eksik varmı bakarmısınız.
Sigorta ayarların doğru yalnızca OSCCON2 ayarını değiştirdim. Bu şekilde 64 Mhz de çalışması gerekir. PORTB.4 pini özel bir pin değil senin işlemcide bu pin bozuk olsa gerek.
Bu işlemcide GIRIŞ port registeri PORTX (PORTA - PORTB...) ile kontrol ediliyor.
Çıkış pinleri ise LATx (LATA - LATB-LATC..) registeri ile kontrol edilmektedir. Bir pini örneğin PORTC.2 pininden HIGH çıkarmak için LATC.2=1 şeklinde bir komut kullanmak gerekir. PORTC.2=1 burada çalışmayacaktır. Sen hiç LAT komutu kullanmamışsın sorun olabilir. Çıkış pinlerini LAT olarak değiştir.
Cevap için teşekkürler. LAT komutunu hiç kullanmadım bir problemde görmedim aslında porta 2-5 arası çıkı olarak kullanıyorum çıkışları HIGH - LOW olarak sürebiliyorum. Ama tekrar kontrol edeceğim.
portb 4-7 giriş olarak tanımladım sadece bu pin çalışmadı. bir şekilde bozmuş olmalıyım.
Burada ilk defa BOR ve WDT kullanıyorum ilk açılışta düşük voltajdan dodlayı iç kristal tam olarak çalışmadan program çalışmaya başlıyor gibi normalda ki hızın çok altında çok yavaş çalıştığına tanık oldum.
Devre beslemesi Güneş paneli olacak ve gün doğarken voltajın yavaş yükselmesi devrenin çalışmasını bu şekilde etkiliyor.
BOR ve WDT kullanımım hakkında bilgi verebilirmisiniz.
LAT konusunda data sheetlerde gereken bilgi var. Kesin olarak girişler PORTX çıkışlar LATX olarak yapılmalıdır deniliyor. Ancak sanırım derleyicilerde bu konuda tedbir alınmış ve sen LAT yerine PORT kullansan bile derlerken gereken ayarlamaları yapıyor. Başka türlü açıklanamaz. Bende önceden sürekli kontrol ediyordum. Çıkışlarda PORTX çalışıyor ama çalışmadığı yerleride gördüm. Bu nedenle en doğrusu LATX olarak kullanmak. Tercih senin elbette.
BOR sigortası işlemci besleme voltajı belirli seviyeye gelinceye kadar işlemciyi RESET de tutar. Belirlenen seviye aşıldığında işlemci start alır. Eski tip işlemciler bu voltaj seviyesi 2 V seviyelerinde idi hatırladığım çokda emin değilim. Ama yenilerde birden fazla voltaj seviyesi verilerek sigorta ayarlarından seçim yaptırılıyor. Bu sigorta işlemci voltajının anlık düşümlerini tespit edebilir ve düşme halinde işlemciye RESET atabilir.Anlık güç çeken elemanların olduğu devrelerde BOR seviyesi düşük alınmalıdır.
WDT adı üzerinde bekçi köpeğimiz. Ben bu sayacı pek kullanmam. O nedenle detaylı açıklama veremeyeceğim. Ancak şöyle bir örnek vereyim. Uyku moduna soktuğun bir işlemciyi ya harici bir kesme yada WDT ile uykudan çıkartman mümkün olabiliyor. Harici kesme kullanamadığın durumlarda bu sayacı belirli bir zaman dilimine ayarlayark o süre sonunda uyku modundan çıkmasını sağlayabilirsin.