16f877a kilitlenme problemi

Başlatan F®T, 05 Nisan 2012, 18:20:26

F®T

selamlar.
protonda yazdığım bir program pic hafızasının %85 ini kaplamış durumda.sorun şu.
2*16 karekter lcd ekranında, programın  belli bir aşamasından sonra  tamamen tüm karekterler 0 oluyor ve pic kitleniyor.şimdi programda stack taşmasımı oluyor yoksa , derleme yapar iken boundry hatası var bundan dolayı bir sorunmu oluyor.proteuse ta bu sorun oluşmuyor.
herkese iyi çalışmalar.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

enes

Merhaba feritt

resimdede gördüğün gibi 876  3 bloğunu dolduran yazılımla sorunsuz çalışıyor.
Kapasiteye gelince 12f675 in program belleğinin neredeyse tamamını dolduracak bi yazılımda oda sorunsuz çalışmıştı.

bence sen hatayı başka yerde aramalısın



F®T

anladım.programda 9 adet float değişken kullandım ,kesme içinde hesaplamalar var onlarla alakalı bir durum olabilirmi.ayrıca kesme içinde  lcd gösterimide etkilermi.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Kesme içinde LCD komutu kullanmamaya çalışın. Sebep olarak bana mantıklı gelmiyor ama olabilirde.
Programı incelemek gerek bana kalırsa. Birde donanım olarak devreye bakmaklazım. Etrafta çalışan bobin röle vs parazit kaynağı varmıdır?. Pic besleme bacaklarında 100nf kondansatör varmıdır. Bu kondasatörün 7805 çıkışında olması hiç bir anlam ifade etmiyor. Orada var ise bile besleme bacaklarında ayrıca olması gerekir. Ayrıca 877 nin iki tane VSS ve VDD si mevcut.ç Bunların hepsini beslemen işin selameti bakımndan önemli.

Ete

F®T

anladım hocam.pic ayaklarının her iki tarafında 100nf var.ayrıca beslemedede var.tamamen izoleli beslemeler.besleme çıkışlarında bobin kullandım.kartı yeni bastım.akü şarj devresi.şu anda yerine takmış değilim.boşta ayarlamalar ve denemelerde bu sorun çıktı.
kesme içinde hem adc hemde lcd komutum var.ayrıca hesaplamalar yapıyorum ve 9 tane float değişken kullandım.devre ve program iş bilgisayarında olduğu için paylaşamadım.kusura bakmayın.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Float değişken kullanmak kilitlenme sebebi değil. Aslında pic ler çok nadir kilitleniyorlar. İstersen Wdt off konumunda ise on konumuna al. Kilitlenmeyi önleyen faktördür. Ama aslı konu ne zaman kilitleniyor ve neden kilitleniyor onu bulmak lazım.
Sistem acaba sonsuz döngüye mi giriyor iyice programa bakmak lazım.

Ete

F®T

ETE hocam sorunumu çözdüm.
1)lcd de ekranda tüm karekterlerin "00000000000000000" olmasının sebebi.çift yüzlü plaketteki çoğu gnd atlatmalarını es geçmiş olmamdan kaynaklanıyormuş.
2)daha sonra lcd ekran bazı durumlarda donuyor ve program of oluyordu.bunun sebebide stack tan kaynaklanıyormuş.fazla gosub kullanmaktan.programı uygun revize edip  o sorunuda çözdüm.
3)sonraki adımda kontaktör girip çıkmasından dolayı meydana gelen donma vardı.trafo primer girişine 100nf/400vac attım.ayrıca röle kontağına 150ohm 100nf seri yapıp girdim.ordada sorunum bitti .
   baya çok aşamalı bir sorundu.şimdi geriye forklift şarjere bağlayıp sistemden akü grubu 80 amper çekerken kartın manyetikten etkilenip etkilenmeyeceği.
   ETE hocam bide sigortalarda bor,watchdog,por hepsi açık.sistemde yüksek akımdan kaynaklanan gürültülerden etkilenirse bu sigortalar sistemi resetleyip tehlikeli bir durum yapmasın diye hepsini açtım.sizce doğrumu yada en uygun konfigrasyon nasıl olmalı bu tip devrelerde.
   bendeki konfigrasyon
   
Device 16F877A
XTAL 4                             
Device 16F877A, WDT_ON             'Watch Dog timer Kapatıldı.
Device 16F877A, PWRT_ON             'Power on timer açık
Device 16F877A, PROTECT_ON         'Kod Protek kapalı
Device 16F877A, LVP_OFF             'Low Voltage Programming kapalı
Device 16F877A, BOD_ON              'Brow Out Detect açık

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

Mucit23

Hataların %90'ı Tasarım kaynaklı.

PCB tasarımında ne yazıkki çoğumuz çok az şey biliyoruz.

Çoğumuz amatör olarak elektronikle uğraşıyoruz ama yinede her ne kadar yazılıma önem verdiysek bi okadarda devre tasarımına ve PCB tasarımına önem vermeliyiz.

Bir elektronik devre nasıl çalışır?
Bir Elektronik devre fabrika ortamında nasıl çalışır.

İşte bu soruların cevabı çok iyi bilinmeli.

Sırf sadece 1 kondansatörün değerinin yanlış seçilmesi yüzünden binlerce dolarlık zarar açabiliyor. Buna şahit oldum.

Bu konuya ben özellikle önem gösteriyorum. Hatta ileride tezimide bu konuda hazırlamayı düşünüyorum.

@feritt 
Doğrusunu zaman gösterecektir ama bence16F877 gibi bir mikrodenetleyici endstriyel ortamda çalışmaya uygun değil. Endüstriyel ortamda karşılaşılabilecek birçok etkiye karşı koruması zayıf.
18F serisi daha uygundur. ;)
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

#8
Feritt,

Yalnızca BOD_ON yerine BOD_OFF yapsan daha iyiolur.
BOD_ON olursa anlık voltaj düşmeleri (rölenin aniden akım çekmesi gibi) sistemin reset olmasını sağlar. OFF yaparsan pic bunlara bakmaz.

Pic de stack kapasitesi çok fazla değil. Yaklaşık 7-8 adres tutabiliyor. Ardı sıra Gosub kullanırsanız bir anda şişebiliyor. Tabiiki en önemlisi gosubla gidilen yerden goto ile dönmek. İşte bu durum stack'ı anında bitiriyor. Dikkat etmek gerekiyor.
Programda çok fazla gosub kullanabilirsin. Ama return ile dönmeden ard arda en fazla 3-4 adet kullanmaya bakın. Aksi halde ipin ucu kaçar.
Programı verse idin anında görebilirdim bunu. GND eksikliği kendi kusurun elbette. Ama madem GND eksikde baştan nasıl çalışıyordu?. Enteresan.
Ete

F®T

#9
Mucit23 haklısın ama kendinde diyorsun tasarım.yoksa işlemci de sorun olmaz.bu iş araba kullanmaya benziyor.herkes kullanır ama bazıları kötü kullanır.yoksa araba kendiliğinden gitimiyor.kaza olursa kullanan sorumlu.bu işlemciler bu gün üretilmiş değil.tabiki çok endüstriyel ortamda kullanıldı16f877.ama belirttiğin gibi biz amatör yaklaşımlarımızdan programa hakim olmayışımız ve donanıma hakim olamayışımızın faturasını işlemcilere kesemeyiz.hata varsa bizim hatamız.bu kartımda aslında işlemci voltajı ve rölelerin voltajı inputların hepsi optik izolasyonlu.iki katmandada ground plate kullandım.bu kadar izolasyon bile yetmiyor demekki.bu bizim için bir gelişim süreci hepsi tecrübe oluyor.katkılarından dolayı teşekkürler.

ETE hocam selamlar.devre iki yüzlü plakette ve devreyi çok genel olarak tasarladım.fakat bu çalışmamda 2 analog giriş 4 dijital çıkış ve 3 dijital giriş lazım olunca plaketin tamamını kullanmadım.iki yüz arasında bir kaç gnd atlatması yapmıştım.yeterli olur diye. diğer kalan kısımları yapmadım.bu sorun oluşunca diğerlerinide yaptım sorun kalmadı.tahminimce gnd atlatması yapmadığım kısımlardan dolayı pic ayakları arasından geçen akım parazite sebep olup picin çalışmasını etkilemiş olabileceği.
bod sigortasını dediğiniz  gibi yapıcam.gosub ile ilgili dedikleriniz çok doğru onuda yaşadım.kısacası bu devrede üst üste çok sorunlarım oldu.onuda aştık şükür.hocam program ve çizimler işyerinde olduğu için veremedim.değişik sorunlardan dolayı.herkese katkılarından dolayı teşekkür ediyorum.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal