znalazłem coś takiego oblicza crc z np. DS18B20 lub iButon
Optimized Dallas (now Maxim) iButton 8-bit CRC calculation.
Polynomial: x^8 + x^5 + x^4 + 1 (0x8C)
Initial value: 0x0
See http://www.maxim-ic.com/appnotes.cfm/appnote_number/27
The following is the equivalent functionality written in C.
mój problem polega na tym co mam przekazać do funkcji co jest "crc" a co "data"
a) odczytane 2 bajty temperatury (chyba nie)
b) jak czytać tylko 9 bajt z ds'a
c) czytałem że DS18B20 ma dwie opcje generowania CRC
1) z ROM
2) Scratchpad
zależy mi na CRC z Scratchpad
Wiem że zamieszałem ale się trochę pogubiłem co z czym.
static __inline__ uint8_t _crc_ibutton_update ( uint8_t __crc,
uint8_t __data
) [static]
Optimized Dallas (now Maxim) iButton 8-bit CRC calculation.
Polynomial: x^8 + x^5 + x^4 + 1 (0x8C)
Initial value: 0x0
See http://www.maxim-ic.com/appnotes.cfm/appnote_number/27
The following is the equivalent functionality written in C.
uint8_t
_crc_ibutton_update(uint8_t crc, uint8_t data)
{
uint8_t i;
crc = crc ^ data;
for (i = 0; i < 8; i++)
{
if (crc & 0x01)
crc = (crc >> 1) ^ 0x8C;
else
crc >>= 1;
}
return crc;
}
mój problem polega na tym co mam przekazać do funkcji co jest "crc" a co "data"
a) odczytane 2 bajty temperatury (chyba nie)
b) jak czytać tylko 9 bajt z ds'a
c) czytałem że DS18B20 ma dwie opcje generowania CRC
1) z ROM
2) Scratchpad
zależy mi na CRC z Scratchpad
Wiem że zamieszałem ale się trochę pogubiłem co z czym.
