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

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

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

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

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

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

Цифровые сигнальные процессоры Вопросы, связанные с применением цифровых сигнальных процессоров: программирование, отладочные средства, алгоритмы...

 
Опции темы

Помогите найт алгоритм вычисления CRC для iButton...

Непрочитано 07.03.2007, 19:42  
IgorSHV
Частый гость
 
Регистрация: 18.12.2006
Сообщений: 11
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
IgorSHV на пути к лучшему
По умолчанию Помогите найт алгоритм вычисления CRC для iButton...

Коллеги, ищу алгоритм расчета CRC для контроля правильности считывания кода iButton.
Хотелось бы найти человеческое описание алгоритма вычисления кода, а не его реализицию на языках программирования.

Может быть поможете?

С уважением,
Игорь

ps
На сайте Л. Ридико есть реализация на ассемблере - не совсем то, что нужно.
Реклама:
IgorSHV вне форума  
Непрочитано 15.03.2007, 22:54  
avgust75
Прописка
 
Регистрация: 01.11.2006
Сообщений: 199
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
avgust75 на пути к лучшему
По умолчанию Re: Помогите найт алгоритм вычисления CRC для iButton...

Может это Вам подойдет

Прикрепленный файл: 521316.rar
avgust75 вне форума  
Непрочитано 15.03.2007, 23:28  
Adviser
Почётный гражданин KAZUS.RUN
 
Регистрация: 07.03.2005
Сообщений: 984
Сказал спасибо: 1
Сказали Спасибо 200 раз(а) в 136 сообщении(ях)
Adviser на пути к лучшему
По умолчанию

Сходите на сайт ЭлИн, они там не так давно форум открыли по 1-Wire, может быть что-то посоветуют.

http://www.elin.ru/1-Wire/discution.htm
Adviser вне форума  
Непрочитано 29.03.2007, 15:12  
paha1956
Временная регистрация
 
Регистрация: 17.05.2006
Сообщений: 71
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
paha1956 на пути к лучшему
По умолчанию

Человеческого описания для CRC алгоритма нет. Есть пространные рассуждения о делении полиномов и попытки объяснить, как реализовать подсчёт CRC "на лету", по мере получения информации. Все реализации этого алгоритма на различных языках обычно приводяться для конкретного полинома и оптимизированы под конкретную задачу. Поэтому надо брать алгоритм, приведённый в документации на устройство (например, iButton) и переносить его на свою платформу. Как я собственно и сделал.

Код:
/*
Функция подсчёта CRC для полинома {10011001} (протокол iButton)
*/
unsigned char CRC_calc(unsigned char *data)
{
unsigned char CRC, A, C, ACC, byte, bit, zero;

CRC=0;
zero=0;

for (byte=0; byte ‹ (NUM_iB_DATA-1); byte++)
  {
  zero|=data[byte];
  
  A=data[byte];
  ACC=A;
  for (bit=0; bit ‹ 8; bit++)
    {
    A^=CRC;                                          // XRL A,CRC
    if (C==0) { if ((A&0x01) == 0) C=0; else C=1;    // RRC A
                A››=1;
              }
    else      { if ((A&0x01) == 0) C=0; else C=1;
                A››=1; A|=0x80;
              }
    A=CRC;                                           // MOV A,CRC
    if (C != 0)                                      // JNC ZERO
      A^=0x18;                                       // XRL A,#18H
    if (C==0) { if ((A&0x01) == 0) C=0; else C=1;    // ZERO: RRC A
                A››=1;
              }
    else      { if ((A&0x01) == 0) C=0; else C=1;
                A››=1; A|=0x80;
              }
    CRC=A;                                           // MOV CRC,A
    ACC››=1;                                         // RR ACC
    A=ACC;
    }
  }
  
if (CRC == data[NUM_iB_DATA-1] && zero != 0)
  return TRUE;
else
  return FALSE;
}
__________________
"Имею честь иметь Вашу честь в своём доме..."
paha1956 вне форума  
Непрочитано 06.08.2007, 23:40  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Что же так сложно ?
Код:
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;
}
urry вне форума  
Непрочитано 17.09.2007, 12:38  
Kabron
Почётный гражданин KAZUS.RUN
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,847
Сказал спасибо: 721
Сказали Спасибо 4,537 раз(а) в 2,072 сообщении(ях)
Kabron на пути к лучшему
По умолчанию

http://www.picbasic.org/forum/showth...highlight=CRC8
я лично пользуюсь последним алгоритмом - работает.
Kabron вне форума  
Непрочитано 05.10.2007, 16:06  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Не все же с васиком работают.. я бы даже сказал - немногие.. Без обид... Я просто постарался написать код, который прошел бы и для пиков, и для авр (иар и хайтек - проверено). Ну извините, если что-то не то...
urry вне форума  
Непрочитано 17.11.2007, 06:00  
ivt2005
Временная регистрация
 
Регистрация: 10.05.2005
Сообщений: 77
Сказал спасибо: 12
Сказали Спасибо 1 раз в 1 сообщении
ivt2005 на пути к лучшему
По умолчанию

На сайте производителя iButton в одном из даташитов или аппнотов есть этот алгоритм и сишная реализация.
(В каком не вспомню даже под пыткой)
ivt2005 вне форума  
Непрочитано 05.04.2008, 17:58  
CERGEI1982
Почётный гражданин KAZUS.RUN
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,578
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Сообщение от urry
Что же так сложно ?
Код:
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;
}
А почему используеш полином 0х8с? в датчике DS18B20 при расчете CRC тож такой же применяется?
И почему начинаеш с mas[0]? ведь это деление по CRC алгоритму.Просто не доходит до меня как работает алгоритм: получается мы сначало отнимаем fb =crc ^ data; ,потом если от этого остатка осталась единица,то добавляем в crc(получается это частное),но ведь потом этим частным опять отнимаем и слаживаем
(я понял что сложение и отнимание разницы нет в полиномной арифметике)

-- Прилагается рисунок: --

CERGEI1982 вне форума  
Непрочитано 02.07.2009, 12:38  
Rusikxxx
Прохожий
 
Регистрация: 02.07.2009
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Rusikxxx на пути к лучшему
По умолчанию

Мучаюсь уже неделю, не могу расчитать CRC в ехе. Стандартный алгоритм не подходит, а как расчитать не знаю. Кто поможет взломать алгоритм и расчитать CRC?
ехе. прилагаю...

Прикрепленный файл: 3624127.rar
Rusikxxx вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычисление CRC qaz12345qaz12345 Микроконтроллеры, АЦП, память и т.д 32 23.08.2010 23:55
DS1990 и crc sergio-nsk Микроконтроллеры, АЦП, память и т.д 13 12.02.2009 11:09
risc вычисления на PC aaleksander Микроконтроллеры, АЦП, память и т.д 1 09.04.2007 18:24
Алгоритм билдер для ПИК контроллеров. Gladkih Микроконтроллеры, АЦП, память и т.д 9 24.02.2007 18:41
Помогите транслировать алгоритм vdlab Микроконтроллеры, АЦП, память и т.д 6 22.11.2006 19:12


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


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