16F876 dan 18F4520ye geçememe ve sorunlar

Başlatan Brv35, 22 Aralık 2015, 22:02:41

Brv35

Herkese merhabalar,

Elimde 16F876 ile yapılmış bir proje var bunu tekrardan yapacağız fakat kullanmamız gereken PIC 18F4520. Interrupt ve timer uyumsuzluğu var iki pic arasında birkaç ayar değiştirdim Option_reg ve tmr yi 18F için düzenledim program isis te çalıştı fakat menülere giremiyorum takılıyor farklı değerler veriyorum T0CON için herbirinde farklı biryerde takılıyor nasıl bir yol izlemeliyim ?

ete

Durup dururken takılma olmaz. Bir sebebi vardır ve onu bulmak gerekir.
Bize hiç bir ip ucu vermeden bunu çözmemii bekleme lütfen.

Ete

F®T

"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Brv35

Ete hocanın tavsiyesi üzerine 64bit ve 18F uyumu üzerine 18F4520.inc dosyasındaki config'ler devre dışı bırakıldı.Program satırlarına configler tekrar eklendi.16Fte bulunan option_reg ve tmr 18F için T0CON ve TMR0L olarak düzenlendi bu yapılan işlemlerin sonunda başarılı bir şekilde compile olmasına rağmen program çalışmıyor açılıyor selamlama yazıları ve ardından rtc geliyor fakat set butonu ile menülere inilemiyor hiçbir şekilde.T0CON da birkaç değişiklik yaparak menüye indim bu seferde menünün ilk bölümü olan zaman ayarlarına geldi ve takıldı.

@F.T

Hocam pull-up ları inceleyeceğim teşekkür ederim cevabınız için gelebildiğim son durum bu.

Brv35

#4
Arkadaşlar büyük ihtimalle sorun 18F için kesme ayarlarında kodun son halini paylaşıyorum yardımlarınızı bekliyorum.Şu son hali sadece set butonu ile menüye girip takılıyor.


Brv35

Arkadaslar kensme ile ilgili bir problemim mevcut yardimlarinizj bekliyorum.

ete

#6
Kesmede bir sorun olduğunu sanmıyorum.
Ancak her 200 kesmede bir sn geçtiği anlaşılıyor. Fakat program içinde zmn değişkenine o kadar çok müdahale varki bu şartlar altında sağlıklı çalışması beklenemez. Üstelik kesme kullanan programlar, ana döngü içinde pause kullanmamalıdır derim hep. Sizin programda da nolkeseden kullanmışsınız.
Böyle bir programın ana kusurunu bulmak kolay iş değil. Net ve açık bir mantık görülmüyor. Sanki her sorun çıktığında onu düzeltecek bir satır ilave edilmiş gibi.
Çözmek için çalıştırıp nerede takıldığını gözlemlemek ve ona göre tedbirler alarak ilerlemek gerekir.
Belkide tekbir hatadan bahsetmiyoruz burada.
Bu arada tmr0 ın 8 bit yada 16 bit çalışacağına karar veren hangi register ise onada bir bak ve 8 bit ayarlandığından emin ol.

Ete

Mucit23

Zamanında benim yazdığım bir projeydi. İş güç derken internete bile zar zor giriyorum inanın. Birde Finallerim başlayacak onu derdi var.

Ete hocam haklıdır, 4-5 sene önce pek düşünemeden o anki programlama bilgimle yapmıştım. Gereksiz kısımlar oldukça fazla diyebilirim. Kesmeyi ben  ekran ışığını otomatik kapanması için yapmıştım. Butonlardan herhangi birine basınca ışık açılıyor, 15sn sonra kapanıyor. Aynı menu butonuna 1sn basınca menuye girmesini sağlıyordum. Kesme çalışmazsa menuye giremezsiniz.

16F876 ile 18F4520'nin kesme ayarları aynı değil. En uygunu datasheete bakmak gerekir. Ete hoca bahsetmiş, normalde 16F876'daki timer0 sürekli 8 bit çalışıyor. 4520 de ise 8/16 bit opsiyonlu. Eğer 8 bit yerine 16 bitte çalışıyorsa olması gerekenden yavaş çalışacaktır. Bunun gibi ayrıntılara dikkat etmek gerekiyor.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Mucit23

Brv35, Güncel durum nedir?

Kesme oluşuyormu?
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Brv35

Malesef durumda bir ilerleme sağlayamadım burada ve diğer forumlardaki arkadaşların 18F4520 örneklerine bakıyorum farklı bulduklarımı denememe rağmen ilerleme yakalıyamadım.Program açılıyor menülere giremiyoruz SET butonuna basılı tutarak,bir değişiklik yaparak menüye girdim fakat ilk adımda takılı kaldı şimdilik son durum bu Mucit23 hocam.

Brv35

#10
Şuan itibariyle program çalışmaktadır.Emeği geçen konuya yorumunu esirgemeyen değerli üyelere teşekkürlerimi sunuyorum. :)

Sorun nasıl çözüldü kısmına gelirsek 16F876 - 18F4520 geçişinde uyguluanan adımlar ;

Option_reg=T0CON yapıldı
ADCON1=15 yapıldı.
INTCON=%10100000
INTCON2=%10000000 olarak değiştirildi (Mucit23 hocam sağolsun)

TMR0 yerine 8 bitlik TMR0H kullanıldı.0

Mucit23

Çalıştırdığına sevindim. Iyi çalışmalar
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Powered by EzPortal