[an error occurred while processing this directive] [an error occurred while processing this directive]
To All. Есть ли ограничения на размер пакета для CRC-16?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено AnS 08 мая 2002 г. 09:59

Тот же вопрос для CRC-8. При пакете более 256 байт программы в девайсе и на Си дают разный результат. Подумал что есть ограничения на размер пакета для соответствующего CRC? Вообще когда надо переходить на CRC-32? Может быть уважаемый All поделится своими изысканиями на тему.
Хотя, Скорее всего у меня ошибка в Сишной программе. Не могу понять где. Что-нибудь с типами переменных?

В этом примере симулируется духбайтовое слово данных простым инкрементом.
Когда данных до 256 все впорядке...
/* CRC.C
*/
unsigned char f,g;
char Nr,nnL,nnH;
short crc, temp, DOS_POLY=0xA001u;
unsigned short h;
int i,nn,k,p0,p1,p2,p3;

main() {
nn=1398;
crc=0;
for (i=0; i nnH=i/256; nnL=i%256;
crc ^= nnL;
for( k = 8; k--;) { temp = -(crc<0),
crc <<= 1,
crc ^= DOS_POLY & temp;
}
crc ^= nnH;
for( k = 8; k--;) { temp = -(crc<0),
crc <<= 1,
crc ^= DOS_POLY & temp;
}
}
h = crc; f = h%256; /*low*/
g = h/256; /*high*/
p0 = f%16; /*0*/
p1 = f/16; /*1*/
p2 = g%16; /*2*/
p3 = g/16; /*3*/
printf("%2d, %2d, %2d, %2d, \n\n",p3,p2,p1,p0);
}


;CRC for Scenix

SSS bank $10
clr rAhH ;clr CRC
clr rAhL
clr rNnc3 ;clr DATA
clr rNnc4
mov W,#$BB ;1398/2=699 (2BBh)
mov rNnc1,W ;Low byte counter for transmit
mov W,#$03
mov rNnc2,W ;High byte counter for transmit
CrSS NOP ;send DATA to NIC
mov W,rNnc3 ; DATA byte (Low)
page $0600
call CrcBay
inc rNnc3
snb STATUS.2
inc rNnc4 ; DATA byte (High)
mov W,rNnc4
call CrcBay
decsz rNnc1 ;Low byte counter for transmit
jmp CrSS
decsz rNnc2 ;High byte counter for transmit
jmp CrSS
ret ;CRC in rAhL rAhH
;
CrcBay bank $10
xor rAhL,W ;=1
mov W,#$08
mov rCrcT,W ;loop 8 times (1 byte)
CrB2 clrb STATUS.0
rl rAhL
rl rAhH
sb STATUS.0
jmp CrB1
mov W,#$01 ;CRC^A001
xor rAhL,W
mov W,#$A0
xor rAhH,W
CrB1 decsz rCrcT
jmp CrB2
ret

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru