16F628A dan 16F648A ya gecişte kod şişmesi

Başlatan OG, 26 Şubat 2008, 09:29:48

OG

Aynı programın noktasına dahi dokunmadan 628 de ve 648 de derlediğimizde aralarında ciddi kod artışı var, sebebi ne olabilir?




FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Logan

Büyük ihtimalle datasheet'e bakmışsınızdır fakat ben yine de hatırlatmak istiyorum.Aşağıdaki resme dikkat ederseniz kapasitelerinin farklı olduğunu göreceksiniz.



Bence aslında yazılan program, her iki işlemci içerisinde aynı yeri kaplıyor, fakat bellek boyutları farklı olduğu için % hesabı yapınca yanıltabiliyor.
İmza.

osmanpasali

Yumuşak huylu isem kim demiş uysal koyunum; kesilir belki ama çekmeye gelmez boynum. M.Akif ERSOY

OG

Sevgili Logan zaten 628 de bellek ihtiyacı belirmeye başladı diye 648 e geçtim. Yüzdeye vursak da aynı şey değilmi, fazladan harcanan ciddi miktarda bellek var.

Derleyici Proton+ 3.2.5.5
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

d_yol

Bir tahmin:
16F628A ile 16F648A bellek yapısı farklı. Program çalışırken 16F648A daha çok BANK switch yapması gerek. Kod artışı bundan kaynaklanıyor.
Kullandığınız program iyi optimize yapmıyor demek. ASM koduna bakın.

Maxim


ftsahin

Her iki işlemci için derleyicinin kullandığı hazır kütüphaneler farklı olabilir. Boyutları dabu yüzden  farklı olabilir.

Logan

OG, o ayrıntıyı kaçırmışım üzgünüm.@d_yol, her iki işlemcide de 4 adet bank var ve bu ihtimal bence zayıf. ASM veya C derleyicileri ile derleyip birde orada görmek lazım. Sanırım Proton ile alakalı bir sorun.
İmza.

arslan74

Alıntı yapılan: "d_yol"Bir tahmin:
16F628A ile 16F648A bellek yapısı farklı. Program çalışırken 16F648A daha çok BANK switch yapması gerek. Kod artışı bundan kaynaklanıyor.
Kullandığınız program iyi optimize yapmıyor demek. ASM koduna bakın.

Büyük ihtamlle bu yüzdendir. 16 serisi PIC'ler 2k lık banklara ayrılmıştır. Dolaysıyla 628 de bank hesabını kayda almamıştır, cünkü kapasitesi zaten max. 2K dır. Ama 648 de 4K hafıza var, dolaysıyla bank hatalarını oluşmaması için sürekli goto ve call gibi işlemlerde bank kontrolü yapması gerek, buda ekstadan maliyet getiriyor. Bu malkiyeti de hafıza artısında görebiliyorsunuz.

Selamlar