c: modf (xc8 microchip)
Miroslav Mraz
mrazik na volny.cz
Úterý Červenec 11 21:15:09 CEST 2023
Tomu už vůbec nerozumím. DS18B20 má teplotu uloženu jako fixed point
číslo se znaménkem, úplně normálně, včetně toho znaménka. Jestli je
cílem snažení jen udělat z toho lidsky čitelný řetězec desítkových
číslic, tak použít double je rovnák na ohýbák, protože převod té
desetinné části je daleko jednodušší než té celé.
A počítat ve fixed point aritmetice znamená jen při násobení posunout
výsledek pomocí >> v tt. případě o 4 bity. Je to ale potřeba dělat v
int32_t, jinak to přeteče. Ale proč násobit nebo dělit něčím teplotu
netuším. Leda byste používal Fahrenheita nebo Réaumura. Sčítání a
odčítání se provádí stejně jako int16_t, to už smysl dává, máme i
Kelviny. Výhoda je že nemají znaménko, ale teploměr v Kelvinech jsem
ještě neviděl.
Mrazík
On 11. 07. 23 20:16, Miroslav Draxal wrote:
> Je to "raketová věda" :) nevím, kdo vymyslel, že desetiny se u DS18B20 se
> budou násobit konstantou 0,0625
>
> Tím modf to pak trhám na celé číslo a desetiny a šup s tím do uint8_t
>
> Míra
>
Další informace o konferenci Hw-list