Float Gösterim nasıl olmalı ???

Başlatan Erol YILMAZ, 23 Temmuz 2008, 17:15:59

Erol YILMAZ

Arkadaşlar,
Hi-tech ile yaptığım programda tanımladığım float değişkenler
ile yaptığım işlemler uygulamada düzgün bir şekilde çalışmaktadır.
Fakat bunları MPLAB ta simulasyon ekranında düzgün bir şekilde
göremiyorum.
Ne yapmam gerekir ?

İlginize teşekkürler...


ferdem

Hocam bildiğiniz gibi "e" on üzeri manasına geliyor. Yani ilk sayı:
1.460250*10^25. Oraya 25 sıfırı nasıl koysun MPLAB! Yanlış mı anladım yoksa? İyi çalışmalar dilerim.

Erol YILMAZ

Alıntı yapılan: "ferdem"Hocam bildiğiniz gibi "e" on üzeri manasına geliyor. Yani ilk sayı:
1.460250*10^25. Oraya 25 sıfırı nasıl koysun MPLAB! Yanlış mı anladım yoksa? İyi çalışmalar dilerim.

Evet zaten orada bir yanlışlık var.
Float sayı tanımlamaları birçok şekilde olabiliyor.
Ben Hi-tech ile Mplab arasında sağlanacak düzgün gösterimi
nasıl yapacağımı araştırıyorum.

arslan74

Alıntı yapılan: "Allegro"
Alıntı yapılan: "ferdem"Hocam bildiğiniz gibi "e" on üzeri manasına geliyor. Yani ilk sayı:
1.460250*10^25. Oraya 25 sıfırı nasıl koysun MPLAB! Yanlış mı anladım yoksa? İyi çalışmalar dilerim.

Evet zaten orada bir yanlışlık var.
Float sayı tanımlamaları birçok şekilde olabiliyor.
Ben Hi-tech ile Mplab arasında sağlanacak düzgün gösterimi
nasıl yapacağımı araştırıyorum.

Merhaba,

En başta Hi-Tech de float değilşenini kaç bit olarak ayarladığınız önemli. 24bit mi yoksa 32 bitmi. Varsayılan float değişkeni 24bittir. Eğer mplab ta float 32 bir olarak seçmişseniz float değerini yanlış yazacaktır.
Size 24bit, Format IEEE Float ve Scientific boş yaparsan float değişkeni istediğin gibi görürsün.

Selamlar

Erol YILMAZ

Sayın arslan74;

Hi-tech te varsayılan Float uzunluğunu değiştirmedim.
MPLAB taki görünümü ekrandaki gibi 24 bit IEEE ve Scientific boş
olarak ayarladım.



Float değişkene ( ADC_total ) 5000.0 aktardığım halde
MPLAB gösterimde farklı şeyler gösteriyor.
Watch tan izlerken de üst başlıkta Decimal seçili durumda.
 


Düzgün gösterim için başka ne yapabilirim ?

picusta

Konu ile alakasi yok ama ADC_TOTAL degiskenini int32 yaparsan daha güzel olur (performans bakimindan) sadece toplama çikarma yapilidigindan int daha hizli. float'da toplama çikarma daha zor ve hassasiyet kaybi olur.

Hi-tech 'in floating point ayarlarina bak bir de, belki 32 bittir.

Erol YILMAZ

@picusta;
Önce doğru çalışsın sonra performans artırımına gideceğim.

Şimdi,
Watch tarafında bazı değişiklikler yaptım.
5000.3 aktardığım float değişkende 5000.25 gördüm.
Bunun yanında,
görünen bölme işlemine rağmen Watch ekranından sonuca ulaşamadım.
Ama imleci değişkenin üstüne getirince 11 sonucunu görüyorum.
Float bölme işleminden 11.92 sonucu çıkması gerekiyor.
Bunu resimden sizde görebilirsiniz.


Erol YILMAZ

Şunu da buldum ama halen problemi çözebilmiş değilim..
Alıntı YapWhy do my 'float' variables in MPLAB's Watch window have the wrong value?
MPLAB's Watch window interprets all floating-point variables
('float' or 'double') as 32 bit values unless you manually change
the properties for each one.

Since our PICC compiler uses 24 bits for 'float', and also for
'double' unless you explicitly specify otherwise, this means
all floating point values displayed will appear wrong.

To correct the display, right-click on the variable name in the
Watch window and select Properties, then change its size to 24 bits.

picusta

Problemin bir sentezini çikartirsak :

- MPLAB'in Watchinda float kaç bite göre ayarlanmis? Test yaptiniz mi?
- Hitech'in Compiler'inde "  "                      "             ""           "" ?

- MPLAB hangi yöntemle float çevrimi yapiliyor: mantis, significant hangi bitler?
- Hitech de """                                ""                                    """           ?

Hangi asamadasin ? Neleri test ettin nelerden eminsin?

arslan74

benim yaptığım deneme



flaot değişkenin virgülden önceki değerini büyük yazarsan, virgülden sonraki değerinde sapma fazla olur. kücük sayılarda ise sapma daha azdır.

selamlar

Erol YILMAZ

Ok Arkadaşlar,

Ben de Watch penceresinde değişkenleri kaldırıp yeniden
ekledim, Problemler Kalktı,
Şu anda olması gerektiği gibi görebiliyorum.
Yalnız bu arada Float sayıların nasıl yazıldığını öğrendim.