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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://www.elin.ru/1-Wire/discution.htm
Adviser вне форума  
Непрочитано 29.03.2007, 15:12   #4
paha1956
Временная регистрация
 
Регистрация: 17.05.2006
Сообщений: 72
Сказал спасибо: 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   #5
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 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   #6
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,495
Сказал спасибо: 695
Сказали Спасибо 4,305 раз(а) в 1,970 сообщении(ях)
Kabron на пути к лучшему
По умолчанию

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

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

На сайте производителя iButton в одном из даташитов или аппнотов есть этот алгоритм и сишная реализация.
(В каком не вспомню даже под пыткой)
ivt2005 вне форума  
Непрочитано 05.04.2008, 17:58   #9
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 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   #10
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, время: 21:04.


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