Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 21.02.2019, 22:04   #1
kolka
Member
 
Регистрация: 26.04.2007
Адрес: Simferopol
Возраст: 40
Сообщений: 86
Вес репутации: 226/46
kolka has a spectacular aura aboutkolka has a spectacular aura aboutkolka has a spectacular aura about
По умолчанию dspic30 crc16

Код:
;----------------------------------------------------------
;********************************************************************
;----------------------------------------------------------
Calc_Crc16:

	MOV #Crc16_Buffer, W0

	MOV #0x00, W1; ok
	MOV.B W1, [W0++]
	MOV #0x00, W1
	MOV.B W1, [W0++]
	MOV #0x00, W1
	MOV.B W1, [W0++]
	MOV #0x00, W1
	MOV.B W1, [W0++]

	MOV #Crc16_Buffer, W0

	MOV #0x0F, W1; ok
	MOV.B W1, [W0++]
	MOV #0xAA, W1
	MOV.B W1, [W0++]
	MOV #0x00, W1
	MOV.B W1, [W0++]
	MOV #0x55, W1
	MOV.B W1, [W0++]

;	MOV #0xF2, W1
;	MOV.B W1, [W0++]
;	MOV #0x01, W1
;	MOV.B W1, [W0++]
;	MOV #0x83, W1
;	MOV.B W1, [W0++]

;------------------------------------------------
	MOV #0xFFFF, W0
	MOV W0, Crc16

	MOV #Crc16_Buffer, W1

	CLR W0
;------------------------------------------------
;	DO #4-1, Calc_Crc16_End
;	MOV.B [W1++], W0

	DO #2-1, Calc_Crc16_End
	MOV [W1++], W0
;------------------------------------------------
	SWAP W0
;------------------------------------------------
	XOR Crc16
;------------------------------------------------
	MOV #0x0000, W0; Magic check: #0x0000
;------------------------------------------------
Calc_Crc16_Bit0:
	BTSS Crc16, #0
	  BRA Calc_Crc16_Bit1
	MOV #0x1021, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit1:
	BTSS Crc16, #1
	  BRA Calc_Crc16_Bit2
	MOV #0x2042, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit2:
	BTSS Crc16, #2
	  BRA Calc_Crc16_Bit3
	MOV  #0x4084, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit3:
	BTSS Crc16, #3
	  BRA Calc_Crc16_Bit4
	MOV #0x8108, W2; poly<, c=1,^poly 
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit4:
	BTSS Crc16, #4
	  BRA Calc_Crc16_Bit5
	MOV #0x1231, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit5:
	BTSS Crc16, #5
	  BRA Calc_Crc16_Bit6
	MOV #0x2462, W2; poly<, c=0 
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit6:
	BTSS Crc16, #6
	  BRA Calc_Crc16_Bit7
	MOV #0x48C4, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit7:
	BTSS Crc16, #7
	  BRA Calc_Crc16_Bit8
	MOV #0x9188, W2; poly<, c=1,^poly 
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit8:
	BTSS Crc16, #8
	  BRA Calc_Crc16_Bit9
	MOV #0x3331, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit9:
	BTSS Crc16, #9
	  BRA Calc_Crc16_Bit10
	MOV #0x6662, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit10:
	BTSS Crc16, #10
	  BRA Calc_Crc16_Bit11
	MOV #0xCCC4, W2; poly<, c=1,^poly 
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit11:
	BTSS Crc16, #11
	  BRA Calc_Crc16_Bit12
	MOV #0x89A9, W2; poly<, c=1,^poly 
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit12:
	BTSS Crc16, #12
	  BRA Calc_Crc16_Bit13
	MOV #0x0373, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit13:
	BTSS Crc16, #13
	  BRA Calc_Crc16_Bit14
	MOV #0x06E6, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit14:
	BTSS Crc16, #14
	  BRA Calc_Crc16_Bit15
	MOV #0x0DCC, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Bit15:
	BTSS Crc16, #15
	  BRA Calc_Crc16_Done
	MOV #0x1B98, W2; poly<, c=0
	XOR W0, W2, W0
;------------------------------------------------
Calc_Crc16_Done:
;------------------------------------------------
	MOV W0, Crc16
;------------------------------------------------
Calc_Crc16_End:
	NOP


	RETURN
;----------------------------------------------------------
;********************************************************************
;----------------------------------------------------------

решил переделать имеющийся код crc8 sae1850 под crc16, но по ходу этот подход непроконает...
считает правильно только четное количество байт (если из буфера запихиваешь по 2 байта - 16 битное слово), если не четное то на выходе естественно неверное значение.(добивал до четного и 00 и ff), и сам понимаю что нарушается алгоритм расчета...

есть ли решение модернизировать код , чтоб считал побайтно?

или придется писать другой алгоритм для побайтного расчета?

Код:
00 00 00 00  = 84C0

F2 01 83 = D374

0F AA 00 55 = 2023

00 FF 55 11 = B8F9

33 22 55 AA BB CC DD EE FF = F53F

92 6B 55 = 0745

FF FF FF FF = 1D0F
kolka вне форума   Ответить с цитированием
Старый 23.02.2019, 13:44   #2
kolka
Member
 
Регистрация: 26.04.2007
Адрес: Simferopol
Возраст: 40
Сообщений: 86
Вес репутации: 226/46
kolka has a spectacular aura aboutkolka has a spectacular aura aboutkolka has a spectacular aura about
По умолчанию Re: dspic30 crc16

Код:


;----------------------------------------------------------
;********************************************************************
;----------------------------------------------------------
Calc_Crc16:

	MOV #Crc16_Buffer, W0

	MOV #0x00, W1; ok
	MOV.B W1, [W0++]
	MOV #0x00, W1
	MOV.B W1, [W0++]
	MOV #0x00, W1
	MOV.B W1, [W0++]
	MOV #0x00, W1
	MOV.B W1, [W0++]

;	MOV #0x0F, W1; ok
;	MOV.B W1, [W0++]
;	MOV #0xAA, W1
;	MOV.B W1, [W0++]
;	MOV #0x00, W1
;	MOV.B W1, [W0++]
;	MOV #0x55, W1
;	MOV.B W1, [W0++]

;	MOV #0xF2, W1; ok
;	MOV.B W1, [W0++]
;	MOV #0x01, W1
;	MOV.B W1, [W0++]
;	MOV #0x83, W1
;	MOV.B W1, [W0++]


	MOV #Crc16_Buffer, W1
	SUB W0, W1, W0
	MOV W0, Crc16_Data_Length



;------------------------------------------------
	PUSH DCOUNT
	PUSH DOSTARTH
	PUSH DOSTARTL
	PUSH DOENDH
	PUSH DOENDL
;------------------------------------------------
	CLR Crc16
;--------------------------------------
	MOV #0x00FF, W0
	MOV W0, Crc16_Temp
;--------------------------------------
	MOV #0x00FF, W0
	MOV W0, Crc16_high
	MOV W0, Crc16_low
;--------------------------------------
	MOV #Crc16_Buffer, W1
;--------------------------------------
	CP0 Crc16_Data_Length
	  BRA Z, Calc_Crc16_End
	MOV Crc16_Data_Length, W2
	SUB W2, #1, W2
	CP0 W2
	  BRA Z, Calc_Crc16_Load_One_Byte
	BRA Calc_Crc16_Load_Flow_Bytes
;------------------------------------------------
Calc_Crc16_Load_Flow_Bytes:
	DO W2, Calc_Crc16_End
;--------------------------------------
Calc_Crc16_Load_One_Byte:
	MOV.B [W1++], W0
;--------------------------------------
	XOR Crc16_Temp
;------------------------------------------------
	MOV #0x0000, W0; Magic check: #0x0000*
;------------------------------------------------
Calc_Crc16_Polynom_Low_Byte:
	BTSC Crc16_Temp, #0
	XOR #0x21, W0; #0x1021; poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #1
	XOR #0x42, W0; #0x2042, poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #2
	XOR #0x84, W0; #0x4084 poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #3
	XOR #0x08, W0; #0x8108 poly<, c=1,^poly 
;--------------------------------------
	BTSC Crc16_Temp, #4
	XOR #0x31, W0; #0x1231 poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #5
	XOR #0x62, W0; #0x2462 poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #6
	XOR #0xC4, W0; #0x48C4 poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #7
	XOR #0x88, W0; #0x9188 poly<, c=1,^poly 
;------------------------------------------------
	XOR Crc16_low
	XOR Crc16_low, WREG
	XOR Crc16_low
;------------------------------------------------
Calc_Crc16_Polynom_High_Byte:
	BTSC Crc16_Temp, #0
	XOR #0x10, W0; #0x1021 poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #1
	XOR #0x20, W0; #0x2042 poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #2
	XOR #0x40, W0; #0x4084 poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #3
	XOR #0x81, W0; #0x8108 poly<, c=1,^poly 
;--------------------------------------
	BTSC Crc16_Temp, #4
	XOR #0x12, W0; #0x1231, poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #5
	XOR #0x24, W0; #0x2462 poly<, c=0 
;--------------------------------------
	BTSC Crc16_Temp, #6
	XOR #0x48, W0; #0x48C4 poly<, c=0
;--------------------------------------
	BTSC Crc16_Temp, #7
	XOR #0x91, W0; #0x9188 poly<, c=1,^poly 
;------------------------------------------------
	MOV W0, Crc16_Temp
;------------------------------------------------
	MOV W0, Crc16_high
;------------------------------------------------
	MOV #Crc16, W0
	MOV Crc16_low, W2
	MOV.B W2, [W0++]
	MOV Crc16_high, W2
	MOV.B W2, [W0++]
;------------------------------------------------
Calc_Crc16_End:NOP
;------------------------------------------------
	POP DOENDL
	POP DOENDH
	POP DOSTARTL
	POP DOSTARTH
	POP DCOUNT
;------------------------------------------------
	RETURN
;----------------------------------------------------------
;********************************************************************
;----------------------------------------------------------

пока получился вот такой рабочий вариант, который считает естественно четное и не четное количество байт. только остался вопрос о подстановке Magic check если таковой нужен.


Если есть у кого нибудь еще варианты расчета как псевдотабличные так формульные , просьба поделиться на предмет изучения .
kolka вне форума   Ответить с цитированием
Старый 23.02.2019, 14:02   #3
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 39
Сообщений: 4,576
Вес репутации: 4493/127
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: dspic30 crc16

Цитата:
Сообщение от kolka Посмотреть сообщение
Если есть у кого нибудь еще варианты расчета как псевдотабличные так формульные , просьба поделиться на предмет изучения .
Ваш вопрос поставлен так, что на него ответить сложно при всем желании, нужно переспрашивать. Как "письмо на деревню дедушке". Вообще, есть несколько стандартных алгоритмов вычисления CRC16 (есть и нестандартные) я два применял и помню:
1) CRC16 CCITT используется в протоколах XModem-CRC, XModem-1k, YModem;
2) CRC16 Modbus используется в протоколе Modbus RTU.


Какой у вас протокол используется? Какой полином? И какой результат для контрольной строки "0123456789"?
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 23.02.2019 в 14:14.
Pridnya вне форума   Ответить с цитированием
Старый 23.02.2019, 15:39   #4
kolka
Member
 
Регистрация: 26.04.2007
Адрес: Simferopol
Возраст: 40
Сообщений: 86
Вес репутации: 226/46
kolka has a spectacular aura aboutkolka has a spectacular aura aboutkolka has a spectacular aura about
По умолчанию Re: dspic30 crc16

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Ваш вопрос поставлен так, что на него ответить сложно при всем желании, нужно переспрашивать. Как "письмо на деревню дедушке". Вообще, есть несколько стандартных алгоритмов вычисления CRC16 (есть и нестандартные) я два применял и помню:
1) CRC16 CCITT используется в протоколах XModem-CRC, XModem-1k, YModem;
2) CRC16 Modbus используется в протоколе Modbus RTU.


Какой у вас протокол используется? Какой полином? И какой результат для контрольной строки "0123456789"?
Да , не конкретизировал вопрос...

16-bit CCITT-FALSE CRC16
Polynomial:1021h
Initial value:FFFFh
XOR value:0000h
Check:29B1h
Magic check:0000h

"0123456789" = 0xC241

"123456789" = 0x3B0A


из документа : AUTOSAR_SWS_CRCLibrary.pdf

00 00 00 00 = 0x84C0
F2 01 83 = 0xD344
0F AA 00 55 = 0x2023
00 FF 55 11 = 0xB8F9
33 22 55 AA BB CC DD EE FF = 0xF53F
92 6B 55 = 0x0745
FF FF FF FF = 0x1DF0

ну вроде ничего не упустил...
kolka вне форума   Ответить с цитированием
Старый 23.02.2019, 16:28   #5
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 39
Сообщений: 4,576
Вес репутации: 4493/127
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: dspic30 crc16

Цитата:
Сообщение от kolka Посмотреть сообщение
Да , не конкретизировал вопрос...

16-bit CCITT-FALSE CRC16
Polynomial:1021h
Initial value:FFFFh
XOR value:0000h
Check:29B1h
Magic check:0000h
Name : CRC-16-CCITT
Poly : 0x1021 x^16 + x^12 + x^5 + 1
Init : 0xFFFF Check : 0x29B1 ("123456789")
Т.е. для строки "123456789" результат вычисления CRC16 равен 0x29B1.
Цитата:
Сообщение от kolka Посмотреть сообщение
"123456789" = 0x3B0A
А это результат вашего алгоритма?


Вот на Си:
Код:
 

#define CCITTINIT 0xFFFF
#define CCITTPOLYNOMIAL 0x1021

/*
Name : CRC-16-CCITT
Poly : 0x1021 x^16 + x^12 + x^5 + 1
Init : 0xFFFF Check : 0x29B1 ("123456789")
Init : 0x0000 Check : 0x31C3 ("123456789")
Revert: false
XorOut: 0x0000
MaxLen: 4294967295
*/
unsigned short CRC16CCITTL(const char *pcBlock, unsigned long len);
unsigned short CRC16CCITTL(const char *pcBlock, unsigned long len)
{
unsigned short crc = CCITTINIT;
unsigned char i;
while (len--)
  {
  crc ^= *pcBlock++ << 8;
  for (i = 0; i < 8; i++)
  crc = crc & 0x8000 ? (crc << 1) ^ CCITTPOLYNOMIAL : crc << 1;
  }
return crc;
}

const char Str[] = "123456789";    
unsigned short Crc16 = CRC16CCITTL(Str, strlen(Str));    
cout << "Crc16 = " << std::hex << Crc16 << endl; // Crc16 = 29b1
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 23.02.2019 в 16:36.
Pridnya вне форума   Ответить с цитированием
Старый 23.02.2019, 17:46   #6
kolka
Member
 
Регистрация: 26.04.2007
Адрес: Simferopol
Возраст: 40
Сообщений: 86
Вес репутации: 226/46
kolka has a spectacular aura aboutkolka has a spectacular aura aboutkolka has a spectacular aura about
По умолчанию Re: dspic30 crc16

да , такой результат, странно....

0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 = 0x3b0a

но ведь все результаты из примера которые я приводил сходятся, 7 примеров чудес то не бывает, тогда где засада - ошибка ?


из документа:
The CRC module shall implement the CRC16 routine based on the CCITT-FALSE CRC16 Standard:
Note concerning the standard document [8]:
The computed FCS is equal to CRC16 XOR FFFFh when the frame is built (first complement of the CCITT-FALSE CRC16).
For the verification, the CRC16 (CCITT-FALSE) is computed on the same data + FCS, and the resulting value is always 1D0Fh.
Note that, if during the verification, the check would have been done on data + CRC16 (i.e. FCS XOR FFFFh) the resulting value would have been 0000h that is the CCITT-FALSE magic check.



еще встретил :
Alias: CRC-16/AUTOSAR, CRC-16/CCITT-FALSE
An algorithm commonly misidentified as CRC-CCITT. CRC-CCITT customarily refers to the LSB-first form of the algorithm in ITU-T Recommendation V.41 (see CRC-16/KERMIT); its MSB-first counterpart is CRC-16/XMODEM.
kolka вне форума   Ответить с цитированием
Старый 23.02.2019, 18:17   #7
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 39
Сообщений: 4,576
Вес репутации: 4493/127
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: dspic30 crc16

Цитата:
Сообщение от kolka Посмотреть сообщение
"123456789" = 0x3B0A

Цитата:
Сообщение от kolka Посмотреть сообщение
да , такой результат, странно....

0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 = 0x3b0a

но ведь все результаты из примера которые я приводил сходятся, 7 примеров чудес то не бывает, тогда где засада - ошибка ?
У вас для двух разных массивов один и тот же результат CRC16, а такого не может быть. Вы видите разницу между массивами?
"123456789" - вот это строка ASCII-символов. Если перевести её в массив, то получится: 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39
0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 - это просто массив.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 23.02.2019, 18:25   #8
kolka
Member
 
Регистрация: 26.04.2007
Адрес: Simferopol
Возраст: 40
Сообщений: 86
Вес репутации: 226/46
kolka has a spectacular aura aboutkolka has a spectacular aura aboutkolka has a spectacular aura about
По умолчанию Re: dspic30 crc16

Цитата:
Сообщение от Pridnya Посмотреть сообщение
У вас для двух разных массивов один и тот же результат CRC16, а такого не может быть. Вы видите разницу между массивами?
"123456789" - вот это строка ASCII-символов. Если перевести её в массив, то получится: 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39
0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 - это просто массив.
опередили меня!
затупил, не обратил внимания что строка в ASCII, приношу извинения за не внимательность...
проверил:
"123456789" = 0x29b1
kolka вне форума   Ответить с цитированием
Старый 23.02.2019, 18:42   #9
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 39
Сообщений: 4,576
Вес репутации: 4493/127
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: dspic30 crc16

Цитата:
Сообщение от kolka Посмотреть сообщение
00 00 00 00 = 0x84C0
F2 01 83 = 0xD344
0F AA 00 55 = 0x2023
00 FF 55 11 = 0xB8F9
33 22 55 AA BB CC DD EE FF = 0xF53F
92 6B 55 = 0x0745
FF FF FF FF = 0x1DF0

ну вроде ничего не упустил...
Цитата:
Сообщение от kolka Посмотреть сообщение
но ведь все результаты из примера которые я приводил сходятся, 7 примеров чудес то не бывает, тогда где засада - ошибка ?
Из этих семи примеров в одной строке ошибка или опечатка.

const uint8_t Str[4] = {0x00, 0x00, 0x00, 0x00}; // 84C0+.
const uint8_t Str[3] = {0xF2, 0x01, 0x83}; // 0xD374-
const uint8_t Str[4] = {0x0F, 0xAA, 0x00, 0x55}; // 0x2023+
const uint8_t Str[4] = {0x00, 0xFF, 0x55, 0x11}; // 0xB8F9+
const uint8_t Str[9] = {0x33, 0x22, 0x55, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF}; // 0xF53F+
const uint8_t Str[3] = {0x92, 0x6B, 0x55}; // 0x0745+
const uint8_t Str[4] = {0xFF, 0xFF, 0xFF, 0xFF}; // 0x1DF0+
uint16_t Crc16 = CRC16CCITTL(Str, sizeof(Str)/sizeof(Str[0]));
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 23.02.2019, 20:19   #10
kolka
Member
 
Регистрация: 26.04.2007
Адрес: Simferopol
Возраст: 40
Сообщений: 86
Вес репутации: 226/46
kolka has a spectacular aura aboutkolka has a spectacular aura aboutkolka has a spectacular aura about
По умолчанию Re: dspic30 crc16

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Из этих семи примеров в одной строке ошибка или опечатка.

const uint8_t Str[4] = {0x00, 0x00, 0x00, 0x00}; // 84C0+.
const uint8_t Str[3] = {0xF2, 0x01, 0x83}; // 0xD374-
const uint8_t Str[4] = {0x0F, 0xAA, 0x00, 0x55}; // 0x2023+
const uint8_t Str[4] = {0x00, 0xFF, 0x55, 0x11}; // 0xB8F9+
const uint8_t Str[9] = {0x33, 0x22, 0x55, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF}; // 0xF53F+
const uint8_t Str[3] = {0x92, 0x6B, 0x55}; // 0x0745+
const uint8_t Str[4] = {0xFF, 0xFF, 0xFF, 0xFF}; // 0x1DF0+
uint16_t Crc16 = CRC16CCITTL(Str, sizeof(Str)/sizeof(Str[0]));
узрели таки - опечатка , в первом посте правильное значение, спасибо.
просто 3 дня до 11 вечера кодил , глаза уже замылиные даже - "ASCII" профтыкал ...
kolka вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Снова про аппаратный CRC16 PIC24...? gsm_storozh Продукция MICROCHIP 12 22.09.2010 00:02
Ток dsPIC30 Vanizma Продукция MICROCHIP 8 10.02.2009 13:09
dspic30 переменные kolka Продукция MICROCHIP 2 10.11.2008 12:50
dsPIC30 система команд kolka Продукция MICROCHIP 4 02.11.2007 19:00
dsPIC30 - CAN nikk73 Продукция MICROCHIP 3 24.06.2007 16:51


Часовой пояс GMT +3, время: 17:18.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot