Вверх ↑
Ответов: 55
Рейтинг: 0
#1: 2013-04-17 15:40:23 ЛС | профиль | цитата
До сих пор я пользовался на микроконтроллерах табличным способом расчета CRC8, а в HiAsme теми, что разработал nesco,еще раз спасибо.
Решил применить на МК математический метод. Взял программу из http://ru.wikipedia.org/wiki/CRC
изменил начальное значение на 0 и не могу получить такое же значение,как у nesco.

unsigned char Crc8_S(unsigned char *pcBlock, unsigned char len)
{
unsigned char crc = 0;
unsigned char i;

while (len--)
{
crc ^= *pcBlock++;

for (i = 0; i < 8; i++)
crc = crc & 0x80 ? (crc << 1) ^ 0x31 : crc << 1;
}

return crc;
}
Что мне нужно подправить в программе для МК, чтобы она стыковалась с расчетами CRC8 от nesco?
------------ Дoбавленo в 15.40:
Разобрался
unsigned char Crc8_S(unsigned char *pcBlock, unsigned char len)
{
unsigned char crc = 0;
unsigned char i;

while (len--)
{
crc ^= *pcBlock++;
for (i = 8; i > 0; i--)
{
crc = crc & 0x01 ? ((crc ^ 0x18)>> 1) | 0x80 : crc >>= 1;

}

}

return crc;
}
так работает.
карма: 0

0