PBP Variable sınırlama..!!!

Başlatan M.Salim GÜLLÜCE, 31 Ekim 2019, 23:53:53

M.Salim GÜLLÜCE

PBP da..
Derlenen bir programda hata almazken eklenen variabl bir şekilde derlenen pic te Grafik LCD de sadece grafik yapıda sıkıntılar oluşturuyor.
Mesela tüm grafik çizimler Sadece ekranın sol tarafın 3 4 pixellik bir sütuna toplanıyor.
Pic İşlemcide hafıza sıkıntısı yok. işlemci 18F6527. Text yazılardada sıkıntı yok. Sadece grafiğe ket vuruyor.
Bu tür problemle karşılaşan oldumu?
Çözümü varsa nedir?

Kodu paylaşmam mümkün değil.. Programcı başka bir arkadaşımız.
Programcı arkadaşımız içinden çıkmaya çalışıyor şimdilik.
PBP da Variable limiti warmı?
Yada MCS sistemin özel olarak variabl için özel genişletilebilir tanımları warmı?

mustafa_cmbz


M.Salim GÜLLÜCE

Alıntı yapılan: mustafa_cmbz - 01 Kasım 2019, 07:52:27Hız ile alakalı olabilir mi?
Değil.
Zaten çalışan bir rutinde sadece bir variabl tanımlamak sistemin sapıtması için yeterli oluyor.
Mantığı nedir bilmiyorum ama başka bir değişken tanımını kaldırıp yer açsanızda bişey değişmiyor.
Özel bir variable formatını sistemmi kullanıyor napıyor anlayamadık.

MC_Skywalker

PBP de üç çeşit var tanımlana biliyor, bit, byte ve word.

degisken var	bit
degisken2 var	byte
degisken3 var	word

http://melabs.com/resources/pbpmanual/

ete

Değişken tanımlama sonucunda bir sorun var ise derleyici gereken ikazı veriyor zaten.
İkaz yok ise değişken sorunuda yok demektir. Elbette değişken tanımlamanın sınırları var. Bu sınırlar işlemci hafızası ile bağlantılı. Az hafızada fazla değişken tanımlarsanız yada dizi değişkeni tanımlamada eleman sayısı kapasiteyi aşarsa "unable to fit" hatası verir derleyici.
Bu hatalar gelmiyor ise değişken adında bir sorun olabilir. Sistem değişkenlerinden birinin adı verilmiş ise derleyici itiraz etmez ama hata ortaya çıkabilir.
Herhangi bir bilgi verilmediği için ancak bu şekilde varsayım yorumu yapabiliyorum.
Tavsiyem değişken adını değiştirin. Olmuyor ise değişkenin yanına adres verin şöyle;
Temp VAR Byte[48] 56 gibi
burada 56 rakamı o değişkenin hafızada 56 nolu adresten itibaren 48 adet adresin bloke edilerek o dizinin belirlenen adresten itibaren hafızaya yerleştirilmesini sağlar. Normlade adresi derleyici otomatik verir ama bu şekilde siz kendiniz en azından bir veya birkaç değişkene zoraki yerleşim adresi verebilirsiniz. Böylece en azından yeni ilave ettiğinizi eskilerin yerine koyarak aynı hatanın meydana gelip gelmediğini anlayabilirsiniz.

Proramı simule edebiliyorsanız isis de "watch_window" açarak değişken adını ve değişken yanına verdiğiniz değişken adresini kullanarak çalışma anında değişkenin aldığı değerleri inceleyerek (takip ederek) hatanın meydana geliş anını ve belkide oluş sebebini bulabilirsinizde.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

foseydon

pic basic pro bilmiyorum. kod da yok, ama bir tahmin yürüteyim.

muhtemelen overflow oluyor bir yerde. yazmaması gereken bir adres bloğuna birşeyler yazılıyor tahminimce. pointer kullanıyorsanız, buraları kontrol edin. pointer artırarak işlem yapıyorsanız, oralarda indexi olması gerekenden 1-2 fazla artırıp/azaltırsanız benzer sorunla karşılaşırsınız gibi geliyor bana. ayrıca struct yapılarınızı kontrol edin, padding'den dolayı sıkıntı çıkıyor olabilir. derleyicinin el kitabına da mutlaka bakın. C system dependent bir dil olduğu için, asıl iş derleyicide biter. dissambly koduna da bakabilirsiniz.

kodu görmeden yorum yapmak zor. arkadaşınız da üye olsun picproje'ye :)

M.Salim GÜLLÜCE

Alıntı yapılan: MC_Skywalker - 01 Kasım 2019, 15:08:33PBP de üç çeşit var tanımlana biliyor, bit, byte ve word.

degisken var bit
degisken2 var byte
degisken3 var word

http://melabs.com/resources/pbpmanual/

Bu değişken yapılarından programcımızın haberi illaki wardır.
Ancak verdiğiniz linki kendisine ileteceğim.
Belki atladığı birşey warsa oradan yakalayabilir.

Sadece diyebileceğim şey program biraz kallavi.
Com porttan aldığı dataları görüntüye çevirip 320x240 grafik ekrana aktaran dinamik bir program.

Normalde olan ve olması gereken


Sadece bir değişken ekleyince ortaya çıkan.




upload images

dnacikaya

@Mehmet Salim GÜLLÜCE İlginç ve sizin için kötü bir durum. Ccs c gibi clean özelliği pbp'de olsa belki sorun kalmazdı. Projeyi kopyalayıp yeniden başka bir klasörde proje oluşturdunuz mu? Belki çözüm olur. Bir de bas ve hex dışında oluşan bütün dosyaları silip yeniden derleme yapılabilir.
Derleyici versiyonuda önemli. Yeni versiyon yüklenmesi gerekebilir.

RaMu

#8
Bahsettiğiniz programcı arkadaş
başka birinin yazmış olduğu bir
programda mı değişiklik yapmaya
çalışıyor yoksa kodları kendi mi yazmıştı?

Bu arada ram hafızada boyut sıkıntısı yok diye direk düşünmemek lazım.
Kısaca değişkeni eklediğiniz konumu değiştirerek deneyin,
önceden tanımlı değişkenlere göre başa sona ortaya gibi.
Ram dede banklara ayrılmış kullanım olduğundan sıkıntı çıkıyor olabilir,
Eklenen değişken tamamı aynı bankta olması gereken değişken grubunu
iki farklı banka bölüyor olabilir,
bunu derleyicinin sıkıntı çıkarmayacak şekilde çözmesi lazım ama PBP bu :)
Access ram durumu var daha.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

taydin

Bu tip pis problemler genelde stack taşmasına bağlı olarak ortaya çıkıyor. Ama basic kullanıyorsunuz, programcı olarak sizin stack ile işiniz olmaz, dolayısıyla basic'in kendindeki bir bug'dan dolayı stack taşıyor olaiblir.

Basic'e hangi PIC türünü kullandığınızı, ne kadar stack olduğunu bir şekilde bildiriyor musunuz? Eğer bildiriliyorsa, belki yanlış işlemciyi bildiriyorsunuz, basic'de ona göre stack kullanıyor ve taşırıyor olabillir.
Timur Aydın (mekatronik.org)

M.Salim GÜLLÜCE

Alıntı yapılan: RaMu - 01 Kasım 2019, 21:05:15Bahsettiğiniz programcı arkadaş
başka birinin yazmış olduğu bir
programda mı değişiklik yapmaya
çalışıyor yoksa kodları kendi mi yazmıştı?

Bu arada ram hafızada boyut sıkıntısı yok diye direk düşünmemek lazım.
Kısaca değişkeni eklediğiniz konumu değiştirerek deneyin,
önceden tanımlı değişkenlere göre başa sona ortaya gibi.
Ram dede banklara ayrılmış kullanım olduğundan sıkıntı çıkıyor olabilir,
Eklenen değişken tamamı aynı bankta olması gereken değişken grubunu
iki farklı banka bölüyor olabilir,
bunu derleyicinin sıkıntı çıkarmayacak şekilde çözmesi lazım ama PBP bu :)
Access ram durumu var daha.
Programı sıfırdan kendisi yazdığı gibi donanımsal tasarımıda kendisi yaptı.
Ancak şimdilik sadece yazılımda değişiklik yapılması ve bazı bug ların düzeltilmesi gerektiğinde bu tür sıkıntılar çıkmakta. Değişken isimleriyle bile bazı zaman çözülebilmekte.
Ama kaynağı ne ise onu bilmediğimizden her seferinde değişiklikler kök söktürmekte.

foseydon

Alıntı yapılan: Mehmet Salim GÜLLÜCE - 01 Kasım 2019, 21:30:04Programı sıfırdan kendisi yazdığı gibi donanımsal tasarımıda kendisi yaptı.
Ancak şimdilik sadece yazılımda değişiklik yapılması ve bazı bug ların düzeltilmesi gerektiğinde bu tür sıkıntılar çıkmakta. Değişken isimleriyle bile bazı zaman çözülebilmekte.
Ama kaynağı ne ise onu bilmediğimizden her seferinde değişiklikler kök söktürmekte.

hocam yazılımı kullanmaya ve güncellemeye devam edecekseniz, ANSI C ile yeniden yazın uygun zamanda derim. harcanacak emek kendini orta vadede amorti edecektir. PIC kullanıyorsunuz sanırım, Microchip'in kendi derleyicileri güzel, lisansı pahalı değil, üstüne bir dünya kütüphanesi var. Tekerleği başktan icat etmenin anlamı yok bence.

M.Salim GÜLLÜCE

Alıntı yapılan: foseydon - 01 Kasım 2019, 21:46:55hocam yazılımı kullanmaya ve güncellemeye devam edecekseniz, ANSI C ile yeniden yazın uygun zamanda derim. harcanacak emek kendini orta vadede amorti edecektir. PIC kullanıyorsunuz sanırım, Microchip'in kendi derleyicileri güzel, lisansı pahalı değil, üstüne bir dünya kütüphanesi var. Tekerleği başktan icat etmenin anlamı yok bence.
Mümkün olsa onu yaptıracağım lakin yazılımcı arkadaşımızın bu işe ayıracak çok büyük zamanı yok.
Evelden başladığı proje olduğundan dolayı Hatıra binaen ilgileniyor.
O yüzden başka bir ortama taşıma fikri uymuyor...
Yoksa C ye yada benzer daha esnek başka ortama taşınması gerekliliğinin bende farkındayım.