c: modf (xc8 microchip)
Miroslav Draxal
evik na volny.cz
Středa Červenec 12 21:49:59 CEST 2023
Jj jde to
# define TEST_BIT(var, bit) (*((uint8Bit_t*) & var)).bit
if (TEST_BIT(DS18B20_teplota.Teplota_MSB, Bit7)) {//záporná teplota <
0°C
DS18B20_teplota._MSB_LSB = ~DS18B20_teplota._MSB_LSB + 1; // bitový
doplněk 16bitů
TeplotyCidel[CisloCidla].TeplotaZaporna = 1; // je záporná teplota
}
TeplotyCidel[CisloCidla].Teplota = DS18B20_teplota.Teplota_LSB;
TeplotyCidel[CisloCidla].DesetinyC = 0;
if (TEST_BIT(NacteneDesetiny, Bit3))
TeplotyCidel[CisloCidla].DesetinyC += 5u;
if (TEST_BIT(NacteneDesetiny, Bit2))
TeplotyCidel[CisloCidla].DesetinyC += 2u; // pomocí malého fígle se
s malinkou nepřesností
if (TEST_BIT(NacteneDesetiny, Bit1))
TeplotyCidel[CisloCidla].DesetinyC += 1u; // zaokrouhlí teplotu na 1
desetinné místo
if (TEST_BIT(NacteneDesetiny, Bit0))
TeplotyCidel[CisloCidla].DesetinyC += 1u; // zaokrouhlí teplotu na 1
desetinné místo
Mám napsanou knihovnu, kde mám několik druhů výpočtu.
Proč tam mám i s double. Protože když používám v projektu double, modf a
výpočet teploty provádím v době, kdy se pic fláká, tak prostě vyměním
rychlost za uspořenou Flash paměť. To je vše.
Míra
-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jan Waclawek
Sent: Wednesday, July 12, 2023 3:29 PM
To: HW-news
Subject: Re: c: modf (xc8 microchip)
>Tak proč by se nedala teplota měřit v šestnáctinách stupně Celsia. A
>přesně tak to ten DS1820 dělá.
A je to mozno zhovadilost, ale za ucelom vypisu by som sa ja osobne ani
nenamahal pocitat tu zlomkovu cast, ale uplne sprosto by som pouzil lookup
tabulku na znaky podla spodnych 4 bitov.
Akurat sa treba zamysliet nad jej "otocenim" pre zaporne teploty.
wek
_______________________________________________
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