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

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

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

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

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

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

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

 
Опции темы
Непрочитано 25.09.2011, 23:12  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Шпасиба! Тяперь ясна!
Будем юзать это:
Цитата:
BYTE Crc8Dallas(BYTE len, BYTE *pData)
{
BYTE crc = 0;
BYTE i;
BYTE temp;

while (len--)
{
crc ^= *pData++;

for (i = 0; i ‹ 8; i++)
crc = crc & 0x01 ? (crc ›› 1) ^ 0x8C : crc ›› 1;
}

return crc;
}
Реклама:
Easyrider83 вне форума  
Непрочитано 25.09.2011, 23:20  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Сообщение от realid Посмотреть сообщение
Согласитесь что 0x31 нагляднее чем 0x8C, хотя это просто перевернутый 0x31
Для несведущего что 0х31, что 0х8С. разницы никакой. Так даже нагляднее.
nonamedov вне форума  
Непрочитано 25.09.2011, 23:32  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,532
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Сообщение от nonamedov Посмотреть сообщение
Для несведущего что 0х31, что 0х8С. разницы никакой. Так даже нагляднее.
Несведущий просто подумает что это какой-то другой полином, ведь х8+х5+х4+1 это 0x31 , а не 0x8C.
realid на форуме  
Непрочитано 25.09.2011, 23:36  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Чего-то не работает. Правильно ли я понял, что надо брать только первые 7 байт?
Цитата:
Crc8Dallas(7,inbuff)
Easyrider83 вне форума  
Непрочитано 25.09.2011, 23:40  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Да, правильно, последний байт равен CRC.
nonamedov вне форума  
Непрочитано 25.09.2011, 23:46  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Спасибо, заработало. Забыл, что принимаю я температуру, читая STRATCHPAD, который имеет 9 байт длинну.
Такая вот процедура получилась:
Цитата:
unsigned int DS1822_Read_Temp_CRC_Check (unsigned long PIN)
{
unsigned char inbuff[DS1822_STRATCHPAD_SIZE];
unsigned char cnt=0;
if (One_Wire_Reset(PIN)==One_Wire_Success)
{
One_Wire_Write_Byte(One_Wire_Skip_ROM,PIN);
One_Wire_Write_Byte(DS1822_READ_STRATCHPAD_CMD,PIN );
while (cnt!=DS1822_STRATCHPAD_SIZE)
{
inbuff[cnt]=One_Wire_Read_Byte(PIN);
cnt++;
}
//// here must be a CRC calculation!!!
if (Crc8Dallas((DS1822_STRATCHPAD_SIZE-1),inbuff)==inbuff[DS1822_STRATCHPAD_SIZE-1])
{
return inbuff[0]|(inbuff[1]‹‹;
}
else
{
return One_Wire_CRC_Error;
}
}
else
{
return One_Wire_Error_No_Echo;
}
}

Последний раз редактировалось Easyrider83; 25.09.2011 в 23:51.
Easyrider83 вне форума  
Непрочитано 25.09.2011, 23:51  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,532
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Сообщение от Easyrider83 Посмотреть сообщение
Чего-то не работает. Правильно ли я понял, что надо брать только первые 7 байт?
Можно взять все 8 байт. Тогда если результат(CRC) верный, то будет 0, иначе не 0.
realid на форуме  
Сказали "Спасибо" realid
Easyrider83 (25.09.2011)
Непрочитано 25.09.2011, 23:54  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Сообщение от realid Посмотреть сообщение
Можно взять все 8 байт. Тогда если результат(CRC) верный, то будет 0, иначе не 0.
В самом деле, работает. Так даже проще.
Easyrider83 вне форума  
Непрочитано 26.09.2011, 08:03  
Catcatcat1
Прописка
 
Регистрация: 05.05.2007
Сообщений: 116
Сказал спасибо: 10
Сказали Спасибо 58 раз(а) в 34 сообщении(ях)
Catcatcat1 на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

вот здесь есть http://invent-systems.narod.ru/DS18B20_HITECH.htm и CRC для даласа на Си и как его программе использовать (пример для DS18B20). Здесь на ассемблере http://invent-systems.narod.ru/CRC.htm
Catcatcat1 вне форума  
Непрочитано 26.09.2011, 08:22  
ethers
Временная регистрация
 
Регистрация: 11.01.2007
Сообщений: 93
Сказал спасибо: 12
Сказали Спасибо 53 раз(а) в 24 сообщении(ях)
ethers на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

добрый день!
Япользуюсь вообще таблицей CRC , просто удобно
//
const unsigned char table[] = {
0,94,188,226,97,63,221,131,194,156,126,32,163,253, 31,65,
157,195,33,127,252,162,64,30,95,1,227,189,62,96,13 0,220,
35,125,159,193,66,28,254,160,225,191,93,3,128,222, 60,98,
190,224,2,92,223,129,99,61,124,34,192,158,29,67,16 1,255,
70,24,250,164,39,121,155,197,132,218,56,102,229,18 7,89,7,
219,133,103,57,186,228,6,88,25,71,165,251,120,38,1 96,154,
101,59,217,135,4,90,184,230,167,249,27,69,198,152, 122,36,
248,166,68,26,153,199,37,123,58,100,134,216,91,5,2 31,185,
140,210,48,110,237,179,81,15,78,16,242,172,47,113, 147,205,
17,79,173,243,112,46,204,146,211,141,111,49,178,23 6,14,80,
175,241,19,77,206,144,114,44,109,51,209,143,12,82, 176,238,
50,108,142,208,83,13,239,177,240,174,76,18,145,207 ,45,115,
202,148,118,40,171,245,23,73,8,86,180,234,105,55,2 13,139,
87,9,235,181,54,104,138,212,149,203,41,119,244,170 ,72,22,
233,183,85,11,136,214,52,106,43,117,151,201,74,20, 246,168,
116,42,200,150,21,75,169,247,182,232,10,84,215,137 ,107,53 };

char CRC_8(char *p)
{
unsigned char a;
unsigned char CRC = 0;
for (a = 7; a › 0; a--)
{
CRC = table[CRC ^ *(p + a)];
}
if (CRC == *p){return CRC = 1;}
else {return CRC = 0;}
}
ethers вне форума  
 

Закладки
Опции темы

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

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

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


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


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