[SDCC] floaty i problemy.

Apr 09, 2004 5 Replies

Witam Zachcialo mi sie uzyc floatow niestety na intach nie potrafie. I co pisze sobie kodzik normlanie. float a=0.5*0.5; unsigned char out = (unsigned char) a; No i mam w zmiennej "out" zero. Chyba powinno byc 6 nie ? Zagladam do pliku asm wygenerowanego przez kompilator i nie malo sie zdziwilem bo tej liniki od floatow to wogole nie ma. Gdzie ona jest ??. Mysle sobie inaczej z nim pojdziemy. #include <float.h>



void main() { float f; unsigned char out; f = __fsmul(2.5, 2.5); out = __fs2uchar(f); }



Niby kod sie generuje ale w out nadal zero widze zamiast 6. Wolam pomocy !!



Pozdrawiam Thomek



----- Original Message ----- From: "Thomek" snipped-for-privacy@niema.op.pl>

Newsgroups: pl.misc.elektronika Sent: Friday, April 09, 2004 6:40 PM Subject: [SDCC] floaty i problemy.

NIe znam siê na SDCC, ale czy przypadkiem s³owo 'out' nie jest zastrze¿onym s³owem kompilatora? Spróbuj zmieniæ nazwê zmiennej.

Pzdr feder

A dlaczego masz widzieæ 6 skoro wynik jest mniejszy od 1?

Mister

Hmm zle napisalem oczywiscie nie powinnio byc tam 0.5 tylko 2.5 tak jak w drugim przykladzie jest. A dokladnie to mam taki kawalek kodu ktory zawsze daje mi wartosc 0. A nie powinien bo val zmienia sie od 0-255.

unsigned char val; unsigned char w_4 = 10, w_9 = 233; float f; unsigned char out;

val = ac_read(); delay_ms(200); lcd_gotoxy(0, 0); f = __fsdiv(__uchar2fs(w_9 - w_4), __uchar2fs(5)); f = __fsdiv(__uchar2fs(val - w_4), __uchar2fs(f)); out = __fs2uchar(f); show_bin3(out); // zawsze wyswietla 0 :(

Juz nie wiem co z tym zrobic a najbardziej mnie rozsmiesza zdanie z dokumentacji SDCC: Also notice that you don't have to call this routines directly. The compiler will use them automatically every time a floating point operation is required. Tylko jak to ma sie do tego ze jak nie uzywam ich bezposrednio to kod nie jest generowany ??. Moze trzeba dodac jakaœ opcje podczas kompilacji ??

Pozdrawiam Thomek

Ale co widac na wydruku z assemblera - w ogole tego nie kompiluje ? Niezbyt wierze..

Tez mi sie tak wydaje ..

J.

Sciagnelem inna wersje SDCC. I o dziwo zaczelo wszystko funkcjonowac ale sam nie wiem co bylo tego powodem bo program tez sie troche zmienil od ostatniego czasu. Szkoda ze nie wiem jaka wersja byla poprzednio. Wazne ze teraz dziala. Taka mala swiateczna magia :).

Pozdrawiam Thomek

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required