avatar_Mucit23

İşlemci Ara sıra donuyor ve Kendi kendine reset atıyor

Başlatan Mucit23, 25 Nisan 2012, 19:53:42

ete

Mucit23,

Gosub komutunu kullanırken iç içe geçmiş gosubların adedine dikkat etmek gerekiyor. 18F serisinde stack boyutu fazla olduğu için 4 adet den fazlasını taşıyabilir. Bildiğim kadarı ile 12F ve 16F serisinde en fazla 4 adet iç içe geçmiş Gosub kullanabilirsin.
18F serisinde ise bu 27 adede kadar çıkabiliyor. Senin gösterdiğin gibi,
GOSUB A
GOSUB B
GOSUB C
şeklinde sınırsız gosub kullanabilirsin. Ama Gosub A ile gittiğin A etiketinde bir başka Gosub D şeklinde bir alt programa gidersen bu iç içe geçmiş iki gosub anlamına gelir. Gittiğin yerde yeniden bir gosub kullanırsan eder sana 3 gosub. Bu şekilde kullanım sakıncalı. Onun haricinde gosubla gittin returnla döndün hiç bir sorun olmaz.

Define OSC komutunda esas olan çalışma frekansıdır. Bu komut pasu komutunun zamanlaması ile diğer zaman bazında çalışan diğer komutların (I2C, Shiftout, Shiftin, Serout, Serin , Hserin , Hserout) zamanlamasının ayarlanması için gereklidir. Aksi halde bu komutların zamanlaması default değerlere göre yapılırki buda programda aksaklıklara sebep olur.
Bu bakımdan kristal frekansı yerine PLL ile ulaşılacak frekans daima Define OSC komutunda kullanılmalıdır.

Çalışma frekansı (kristal değil direk Çalışma frekansı) 8 Mhz in altında ise XT , üzerinde ise HS nin seçilmesi gerekir.

Ama PLL denilen şey ulaşılamayan frekanslar için kullanılamsı gereken bir komutdur. 16Mhz çalışmak için direk 16Mhz kristal kullanmak bence daha doğru olur. Onun yerine 4 Mhz kristal ile 16Mhz e PLL ile ulaşmak mümkün ancak kullanım açısından tercih edilmemelidir. Bu benim görüşüm. Dikkat edersen PLL den bahsedilirken 10Mhz gibi frekanslardan bahsediliyor.

Ete

Mucit23

Hoca meğer 18F lerde iç içer girmiş gosub komutu sayısı 27 ye kadar çıkabiliyorsa benim bu gosub yüzünden reset yemem anlamsız olur. Çünkü ben en fazla 3 adet iç içer gosub komutu kullanmıştım onlarda şartlılar.

Gerçi şimdi hepsini düşürdüm. Artık iç içe girmiş gosub komutu yok sayılır.

Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

F®T

16f877a da 6.stack a kadar bir sorun olmadı.üstündede lcd ekran donması ve program kitlenmesi olmuştu.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

3mZ


Mucit23

Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

3mZ

Mucit23,

Eğer varsa simülasyonun ve anladığım kadarı ile 3-4 adette tuş var programlayıcı cihazda. Menülere hızlı hızlı gir çık programı allak bullak et her yeriyle hızlı hızlı ayar yap eğer hata bulursa ne alaaa...

Diğer aklıma gelenler programda eğer varsaki eprom kaydı kullandığın write(data,bilgi) 'den sonra eğer pause 10 gibi bir rahatlatma kullandıysan ve bu programda tmr kesmesi mevcutsa her write komutuna gelindiğinde tmr'ı bozabilir yerine for-next kullanılmalı veya bir değeri, değer değişmese bile üst üste kayıt yaptırdığında program donuyordur. Write komutunu değer değiştiği zaman kullanmak daha doğru olur.
Ekran kaymasında ise aklıma gelen

LCDOUT $FE,1 'Ekranı silden sonra biraz gecikme yapman

Bu tür uzaktan kumandalı sistemlerde aklıma ancak bu kadarı geliyor.

3M

Mucit23

Sistemde 4X4 tuş takımı Var. Timer kesmesi ile tuştakımını sürekli tarıyorum.

Sistem bilgilerini ard arda eeproma kaydediyorum doğrudur. Ard arda 10 adrese değerleri kaydediyorum. Her birinde 10Ms bekleme yaptığımı düşünürsek  100ms Bekleme yapar. Epeyce bir süre. Heleki Kesme var ise kesmeyi sekteye uğratabilir.
Benim bildiğim Eeproma veri yazdıktan sonra 10ms boyunca hiç bir iş yapılmaması gerekiyor. Ama Fornext döngüsüde bir iştir. İşlemciyi meşgul eder.
Hadi Timer sekteye uğrasın. Bu neden işlemciyi reset attırsınki. Bunu anlamıyorum. Yedek yazıcıları yapayım sonra yaptığım değişiklikleri deneyeceğim. Şimdi cihaz çalışıyor Değişiklik yaparsam Tüm kayıtlar gider. Benimde artık aklıma başka birşey gelmiyor.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

3mZ

Mucit23,

For-next bir sayaçtır evet işlemci meşgul olur fakat tmr'ı bozmaz. Neyse denemelerini yap sonucu yazarsın.

iyi çalışmalar
3M

Mucit23

Hocam Tekrardan Rahatsız ediyorum.
İşlemcinin sigortalarında STRV denilen birşey var. Sanırım Stack Overflow Reset Anlamına geliyor. Daha önce dikkatimi fazla çekmedi. Bu sigortanın açık olması İşlemcinin reset yemesine Sebeb olabilirmi? Sanırım Stack Taşmasında Reset atıyor işlemciye...

Şimdi Diğer Yedek Cihazı yaptım onu çalıştırım testlerimi yapıyorum. İki gün boyunca süreklı olarak çalıştıracağım. Ve çok sık bir şekilde kullanacağım. Ayrıca Cihazı Yarın işyerine götürüp Osiloskopla Besleme sinyallerine bakacağım. 18F452 nin besleme bacaklarının kökünde 100Nf lar var ama ben yinede şüpheleniyorum. Çünkü başka birşey artık aklıma gelmiyor.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

3mZ

@mucit23,

Sigorta ayarlarını neden protonun .inc dosyasına göre yaptın bunu anlamış değilim. Burada stack taşması reseti açık ve borv(brown out reset voltage) bir voltaj değeri girilmiş.

sigorta ayarlarını şu şekilde yapsan;

Config_Start
   OSC=XT
   OSCS=OFF
   PWRT=ON
   BOR=OFF
   WDT=ON
   WDTPS=128
   CCP2MUX=ON
   STVR=OFF
   LVP=OFF
   DEBUG=OFF
   CP0=OFF
   CP1=OFF
   CP2=OFF
   CP3=OFF
   CPB=OFF
   CPD=OFF
   WRT0=OFF
   WRT1=OFF
   WRT2=OFF
   WRT3=OFF
   WRTB=OFF
   WRTC=OFF
   WRTD=OFF
   EBTR0=OFF
   EBTR1=OFF
   EBTR2=OFF
   EBTR3=OFF
   EBTRB=OFF
Config_End

Bence %99 sigorta ayarlarında genede erol hoca daha iyisini bilir bu benim görüşüm. Sen bu sigorta ayarlarını bir dene bence.

3M

Mucit23

Hocam Dediğiniz ayarlamaları Proton için Geçerli Ben yazılımımı PicBasic ile yazdım.

Sorun Devam ediyor. Kafam çok bozuldu açıkçası. Artık donanımsal Bir problem olabileceğini düşünüyorum :( :(
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

3mZ

Yanlış anlamışım fakat gerekli değişiklikleri pic basic'e göre yapıp denesen.

3m

ete

Mucit,
Stack overflow reset sigortası açık olsa ayrı dert olmasa ayrı dert. Stack taşması varsa sigortanın açık olması iyidir. Programın kilitlenip çakılmasını önler. Açık olmaz ise ve stackda taşma varsa program çakılıp kalır.
Burada önemli olan sorunun bulunmasıdır.

Ete

3mZ

Ete hocam,
Benim sigortayı kapatsın dememin sebebi eğer bir açıkken birde kapalıyken denerse programı en azından taşma olup olmadığını anlarız kafamızdan bir şıkkı atmış oluruz diyorum.

3M

ete

Programı incelerse kendisi taşmaya sebep olabilecek yerleri bulacağından eminim.
Taşma olsa isis de de belli ederdi kendisini.  Ancak çok da emin değilim açıkçası. Ortada bir sorun var ama biz onu göremiyoruz.
Sigortayı kapatmak belkide taşmanın görülmesi için uygun bir davranış olabilir. denemek gerek.

Ete

Powered by EzPortal