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