Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Функция для расчета CRC

Непрочитано 29.12.2009, 18:13  
maxNTF
Вид на жительство
 
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
maxNTF на пути к лучшему
По умолчанию Функция для расчета CRC

Нужна функция на Си для расчета CRC. пробовал во эту, не совпадает с реальной CRC
Код:
void CRC_Calc(Data)
{
 unsigned char temp,count,carry;
 for(count=0;count‹8;count++)
 {
  temp=Data ^ CRC;
  carry=0;
  if((temp & 0x01)==1)
  {
   carry=1;
  }
  temp=CRC;
  if(temp !=0)
  {
   temp=temp ^ 0x18;
  }
  temp = temp ››1;
  temp &=0x7F;     // ensure bit 8 is clear
  if(carry==1)
  {
   temp |= 0x80;   // Move carry into top bit
  }
  CRC=temp;        // Store the CRC
  Data = Data ››1; // position the next data for adding to the CRC
 }
}
Пробую на датчике DS18B20.
Реклама:
maxNTF вне форума  
Непрочитано 29.12.2009, 19:18  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Функция для расчета CRC

Код:
unsigned char calc_crc (unsigned char *mas)
{
unsigned char i,data,crc,fb,st_byt;
st_byt=0;
crc=0;
do{
data=mas[st_byt];
     for (i=0;i‹8;i++)// счетчик битов в байте
        {
       fb =crc  ^ data;
      fb&=1;
        crc ››= 1;     
        data ›› =1;
      if (fb == 1)crc^=0x8c;// полином, мля
      }
st_byt++;
}while  (st_byt != 8);// счетчик байтов в массиве
return crc;
}
__________________
warez
urry вне форума  
Непрочитано 30.12.2009, 10:03  
maxNTF
Вид на жительство
 
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
maxNTF на пути к лучшему
По умолчанию Re: Функция для расчета CRC

Код:
while  (st_byt != 8);// счетчик байтов в массиве
Здесь задаем размер массива?
Если ставим 7, будет корректно считать CRC для 7 байт?
maxNTF вне форума  
Непрочитано 30.12.2009, 10:16  
maxNTF
Вид на жительство
 
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
maxNTF на пути к лучшему
По умолчанию Re: Функция для расчета CRC

Все работает. Спасибо!
maxNTF вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Книги dosikus Электронная библиотека 11242 29.12.2015 23:45
[Решено] Третье Послание Человечеству lelkanet Отвлекитесь, эмбеддеры! 201 06.01.2010 00:33
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03


Часовой пояс GMT +4, время: 00:23.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.