реклама на сайте
подробности

 
 
> CRC16
ilian
сообщение Aug 16 2007, 17:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 17-01-05
Пользователь №: 1 997



Привет,
У меня такая задача.
Нужно работает по RS-485 , RF наводки по кабелем болшие.
PC мастер и управляет 6 MSP430.Сейчас у меня протокол простой и нет CRC.
Если кто нибутъ может предложит хорошии протокол и литература для CRC-16.
Спосиба.

Илиян
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
VAI
сообщение Aug 17 2007, 03:39
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Код

#if !defined( BYTE )
  #define BYTE          unsigned char
#endif

#if !defined( WORD )
  #define WORD          unsigned short
#endif

/* --- crc16() -------------------------------------------------------------------------------------------- **
*  Контрольная сумма crc16
*    BYTE *buf - указатель на байтовый буфер
*    short num - размер буфера в байтах
*  Возвращает
*    unsigned short crc16 буфера
* -------------------------------------------------------------------------------------------------------- */
WORD crc16( BYTE *buf, WORD num )
{
int i;
unsigned short crc = 0xffff;

  while ( num-- )
  { crc ^= *buf++;
    i = 8;
    do
    { if ( crc & 1 )
        crc = ( crc >> 1 ) ^ 0xa001;
      else
        crc >>= 1;
    } while ( --i );
  }
  return( crc );
}

/* --- crc8() --------------------------------------------------------------------------------------------- **
*  Контрольная сумма crc8
*    BYTE *buf - указатель на байтовый буфер
*    short num - размер буфера в байтах
*  Возвращает
*    BYTE crc8 буфера
* -------------------------------------------------------------------------------------------------------- */
BYTE crc8( BYTE *buf, WORD num )
{
int i;
BYTE chr, crc = 0;

  while ( num-- )
  { chr = *buf++;
    i = 8;
    do
    { crc = (( chr ^ crc ) & 1 ) ? ((( crc ^ 0x18 ) >> 1 ) | 0x80 ) : (( crc >> 1 ) & ~0x80 );
      chr >>= 1;
    } while ( --i );
  }
  return( crc );
}


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 05:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01807 секунд с 7
ELECTRONIX ©2004-2016