Virgüllü sayılar?

Başlatan EMG81, 18 Mart 2011, 23:11:55

EMG81

Pic için Hangi derleyici virgüllü sayılar ile işlem yapabilir ? Hangi derleyicide bi değişkenin içerisine 6,25 sayısını atabilirim ? Dil farketmez.

Tagli

C derleyicilerinin çoğu yapıyordur sanırım. C18 ve Hi-Tech C'nin yaptığını biliyorum.

Ancak şunu da unutmamak gerekir ki virgüllü sayılarla uğraşmak işlemcinin performansını oldukça düşürür. Çok zorda kalmadıkça kullanmamak lazım.

Ayrıca, virgüllü sayı dediğimiz şeylerin de iki çeşidi var: Floating point ve fixed point. Yukarıda saydıklarım bildiğim kadarıyla floating point değişkenleri destekliyorlar.

Benim merak ettiğim şey dsPIC'lerde bu işin nasıl olduğu. C30 da bildiğim kadarıyla floating point desteği veriyor ama fixed point desteği yok. Ama dsPIC'ler donanımsal olarak fixed point destekliyor. Bu durumda derleyici bu donanımsal destekten yararlanamıyor. Yoksa ben mi yanlış yorumluyorum? Bilen birisi açıklık getirirse sevinirim.
Gökçe Tağlıoğlu

fahri-

ccs c de float değişkenlerle virgüllü işlem yapabilirsiniz.

iyildirim

#3
Alıntı yapılan: Tagli - 18 Mart 2011, 23:21:41
Benim merak ettiğim şey dsPIC'lerde bu işin nasıl olduğu. C30 da bildiğim kadarıyla floating point desteği veriyor ama fixed point desteği yok. Ama dsPIC'ler donanımsal olarak fixed point destekliyor. Bu durumda derleyici bu donanımsal destekten yararlanamıyor. Yoksa ben mi yanlış yorumluyorum? Bilen birisi açıklık getirirse sevinirim.

C30 floating point desteği veriyor.
dsPIC işlemciler fixed point desteğini donanımsal olarak veriyor. Zaten bu desteği olmasa dsp olamazdı.
Sabit noktalı sayı kullanmak için değişken deklarasyonları FRACTIONAL veri tipi ile yapılmalı ve CORCON registerini kullanarak işlemciye fractional veri tipi ile işlem yapıldığı da söylenmeli.

dsPIC ler fractional veri tipi kullandığında Q15 formatında veri kabul ediyorlar. Yani bir bit işarete 15 bit de veriye ayrılıyor. Fractional veri tipi ile -1 ve +1 arasında 15 bitlik hassasiyette  değer tutulabiliyor. Yani integer 32768 eşittir fractional 1 oluyor. integer 1 de  fractional 1/32768

Hazır dsp kütüphanelerini kullanırken CORCON registeri kütüphane fractional veri tipi ile çalışıyorsa genellikle otomatik olarak ayarlanıyor. dsp kütüphane kullanımında dikkat edilmesi gereken bir nokta da eğer kesmeler aktif ise CORCON ve ilgili diğer registerlerin de yedeklenmesi ve gerekiyorsa kesme içerisinde güncellenmesi gerektiği.