Pretypovani promene

Pavel KREJCI krepa76 na gmail.com
Čtvrtek Prosinec 30 09:45:33 CET 2010


Muzu potvrdit, ma to tak i treba IAR. Prednastaveena je tam nejaka
"stredni" funkcionalita, aby vysledny kod nezabiral moc pameti.
Jeste by si mel Michal zapnout warningy a podivat se tam, divil bych
se, kdyby ve vypisu nebyla zminka...

PK.

2010/12/30 Lukas Burda <burdal1 na post.cz>:
> Jestli jse sam nic nenastavoval, tak to vypada ze bude opravdu problem
> tam. Funkce pro formatovany i/o maji minimalni, normalni (defaultne
> nastavenou) a float verzi.
> http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html
> popis vprintf.
>
> Lukas Burda
>
>
> Thursday, December 30, 2010, 1:07:37 AM, you wrote:
>
>> Presne. Printf nechce zobrazovat float (double). Na nastaveni linkeru se podivam. Diky za tip.
>
>> MG
>
>> -----Original Message-----
>> From: hw-list-bounces na list.hw.cz
>> [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Lukas Burda
>> Sent: Wednesday, December 29, 2010 11:49 PM
>> To: HW-news
>> Subject: Re: Pretypovani promene
>
>> Popravde si nejsem jisty, co vlastne mate za problem. Pochopil jsem
>> spravne, ze vypocet ve floatech funguje, ale problem je, ze vypisovani
>> intu vam funguje a vypis float (a double) ne? Zakladni otazka -
>> nastavil jste linker ze ma linkovat float verze printf funkce?
>
>> Lukas Burda
>
>
>
>> Wednesday, December 29, 2010, 9:42:53 PM, you wrote:
>
>>> Zdravim,
>>> Potreboval bych poradit ohledne pretypovani promene. Zkousel jsem
>>> vsechno mozne, ale nedari se (WinAVR, atmega32).
>>>
>>> Mam nasledujici vzorec, kde vysledek je ve tvaru unsigned long:
>>>
>>> (unsigned long)((float)twPLL*(float)32.768*(float)0.25-225)
>>>
>>> To je v poradku, vrati se mi cislo 87500-108000 (radiova FM frekvence v Khz).
>>>
>>> Ale potrebuji z toho udelat "Mhz", tedy deleno 1000 a toto koreknte vypsat. Tedy
>>>
>>> printf("%.1f Mhz",frekvence);
>>>
>>> Pricemz frekvence je deklarovana:
>>>
>>> double frekvence;
>>>
>>> Ze zoufalosti uz jsem zkousel jsem ruzne pokusy, ale bud se mi ukaze nesmyslny udaj nebo nic...
>>>
>>> frekvence=(double)((unsigned
>>> long)((float)twPLL*(float)32.768*(float)0.25-225))/1000);
>>> frekvence=(double)((unsigned
>>> long)((float)twPLL*(float)32.768*(float)0.25-225))/(double)1000);
>>> frekvence=(double)((unsigned
>>> long)((float)twPLL*(float)32.768*(float)0.25-225))/(double)1000.0);
>>>
>>> Jak na to?
>>>
>>> Diky
>>> Michal Grunt
>
>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


Další informace o konferenci Hw-list