MicroC for AVR, PrintOut sorunu

Başlatan rojhatbilge, 31 Aralık 2009, 16:18:40

rojhatbilge

Atmel AVR serisi işlemcileri öğrenmeye kakarverdim ve microC derleyicisi aldım.
(Daha önce pic işlemcileriyle proje gerçekleştirmiştim.)

MicroC de standart C de var olan printf fonksiyonu yok. Bunun terine IDE içinde PrintOut diye bir fonksiyon tanımlamışlar.

PrintOut fonksiyonu kullandığımda 16kByte'lik ATmega16 işlemcisinin belleğinin %66 'sını dolduruyor. (Çüşşşş diyorum.)
(CCS C de printf fonksiyonu 16kByte işlemcilerde %2 yer kaplıyor)

microC kullanan arkadaşlardan bilgi almak istiyorum. Bu normal mi, değilse bu bellek sarfiyatını engelleme yolu var mi?

Şimdiden teşekkürler.

dumansiz

Bende microc pro 2009 for AVR kurulu,bu versiyonda printout() diye bir fonksiyon yok.Bu kadar yer kaplamasında bir sorun var.Yazdığın kodları eklersen belki daha fazla yardımcı olunabilir.
Ram ve Rom kullanımını gösteren bir ekran görüntüsüde iyi olurdu.
Bu arada versiyonun nedir?

rojhatbilge

Kullanıdğım versiyon 2.10


char text[20];

void yaz(char c)
{
    static char i = 0;
    text = c;
}

void main() {

    PrintOut(yaz, "Rojhat %d", 5);

}


void Yaz(char c)  fonksiyonu sadece bir test fonksiyonu. İçeriği önemli değil.

PrintOut'u yaz fonksiyonu yerine LCD'ye karakter yazan bir fonksiyona yönlendirdiğimde de aynı şey oluyor.

rojhatbilge

printf'in işini gören formatlı yazımı siz nasıl yapıyorsunuz.?

Yani bir LCD ekranına bir değişkenin değerini yazdırmak için nasıl bir yol izliyorsunuz.?

Erhan YILMAZ

Avrlere yeni başladıysan ücretsiz c derleyici olan winavryi kullanmanı öneririm ayrıca nettede bir çok kod örneği mevcut

Amenofis

Arkadaşım merak ettim, aldım derken lisansınımı satın aldın programın. Bende biraz avr kullandım gcc den (winavr) başka derleyiciyi hiç düşünmedim bile. Soruna gelirsek libraries kısmından sadece istediğin kütüphaneleri seç. Fazlası kodu şişirir. Olmazsa boş bir main() {} derle kod boyutuna bak.Birkaç yüz byte tan fazlaysa derleyicide sorun var demektir.
Derdin sadece glcd ye değişken göndermek ise bence fonksiyonu kendin yaz.

rojhatbilge

Evet, lisanlı aldım.

Amaç ekrana değer yazdırmak değil. Bu her şekilde yapılabilir. Ama printfın
printf("%s = %d, %f", str[dil], deger, analog); şeklindeki formatlı yazımı çok avantajlı.

Boş bir main derledim. Zaten yukarda yazdığım %66 olayını buradan hesapladım. Küçük bir programda printOut fonksiyonunu kullanmadan derledim %7 yer kaplarken aynı prorgrama sadece printOut fonksiyonunu eklediğimde %73'e çıktı.

rojhatbilge

winAVR'yide inceledim. Pek hoşuma gitmedi.