Stack Overflow Hatası

Başlatan FxDev, 29 Haziran 2010, 19:11:20

FxDev

16f916 ile bir proje geliştiriyorum. LCD+LCD'de Menüler+Saat Bazında Ayarlanan Periyotlar+...+PWM Kontrolleri gibi bir çok şey mevcut. Daha olayın içine debounce ve watchdag kısmını katmadım bile. Ve pic bugün en sonunda stack alanım doldu deyip, falanca fonksiyonu çağıramıyorum, stack alanım patladı dedi.

Şimdi siz ustalara sormak isterim, pic'de sadece 8 taneCİK kullanıma sahip olan bu birimin, daha az kullanılması için neler yapılabilir?
Döngülerin içinde çok fonksiyon çağırmamak ve yerel değişken yerine global değişken kullanmak aklıma gelenler.
Başka yollar varsa merak etmekteyim.

Ayrıca fiyat/performans açısından 913'ten 916'ya geçmem bile az da olsa maddi açıdan külfet getiriyor, onun için pic değiştirmem söz konusu değil yüksek bir modele geç diye söyleyenler olabilir. Gönül isterki dspic kullan 256k yerde at koştur ama maalesef öyle olmuyor. Ayrıca pic fiyat/performans açısından pahalı da olsa projeye böyle başladık ve sonu geldi.

Fakat yine de görüş almak isterim NEC, ST, AVR vb. konularda bilgi nereden bulabilirim?

camby

biz de tam stack konusunu konuşuyorduk fikir verir belki , https://www.picproje.org/index.php/topic,24311.15.html

Stack dolması yüzünden ben de alt programlara gidiş gelişleri GOTO ile yapmaya başladım , alt programa GOTO ile gidip , dönüşte yine GOTO ile dönüyorum ANA döngüye , ANA döngüde sürekli olarak program Flag'lerini taradığımdan nereye döndüğüm sorun olmuyor , hi-tech ile nasıl olur bunlar bilmiyorum ama fikir verebilir..

serdararikan

microchip in uygulama notlarında uzak GOTO lara ulaşma başlıpında programcounterin swap kullanılarak regisrete kaydedilmesinden bahsediyordu diye hatırlıyorum.

muhittin_kaplan

c de Goto kullanılmaz. fonksiyonlara gidilip gelince ister istemez stack dolar

picusta

C'deki "inline" tanimini kullan. Gerekmedikçe fonksyonlarin "inline" olsun.

papylon

Hocam bu "inline" tanımını program içerisinde nasıl kullanıyoruz? Ufak bir örnek vermeniz mümkün mü?
Ben birkaç deneme yaptım ama derleme sırasında hata aldım.

picusta

Alıntı yapılan: papylon - 30 Haziran 2010, 13:44:57
Hocam bu "inline" tanımını program içerisinde nasıl kullanıyoruz? Ufak bir örnek vermeniz mümkün mü?
Ben birkaç deneme yaptım ama derleme sırasında hata aldım.
Hayir veremem.
Hangi derleyici kullandigini ve hangi hatayi adigini yazmamisin.
inline yapmak için __inline__  __attribute__(inline)   gibi degisik tanimlamalar olabilir. Derleyicinin kitabina bakmalisin.