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

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

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

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

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

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

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

 
Опции темы

Замок на iButton DS1990

Непрочитано 25.09.2011, 22:09  
GremLine
Частый гость
 
Регистрация: 08.03.2009
Сообщений: 28
Сказал спасибо: 96
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
GremLine на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

как всегда скопипастил
Код:
char crc8 ( char *data_in, int number_of_bytes_to_read )
{
	char	 crc;
	int loop_count;
	char  bit_counter, data, feedback_bit;
	
	crc = CRC8INIT;

	for (loop_count = 0; loop_count != number_of_bytes_to_read; loop_count++)
	{
		data = data_in[loop_count];
		
		bit_counter = 8;
		do {
			feedback_bit = (crc ^ data) & 0x01;
	
			if ( feedback_bit == 0x01 ) {
				crc = crc ^ CRC8POLY;
			}
			crc = (crc ›› 1) & 0x7F;
			if ( feedback_bit == 0x01 ) {
				crc = crc | 0x80;
			}
		
			data = data ›› 1;
			bit_counter--;
		
		} while (bit_counter › 0);
	}
	
	return crc;
}
так сойдет ?
Реклама:
GremLine вне форума  
Сказали "Спасибо" GremLine
Easyrider83 (25.09.2011)
Непрочитано 25.09.2011, 22:15  
Bar_boss
Гражданин KAZUS.RUN
 
Регистрация: 22.04.2007
Адрес: Минск
Сообщений: 565
Сказал спасибо: 53
Сказали Спасибо 104 раз(а) в 81 сообщении(ях)
Bar_boss на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Сообщение от Easyrider83 Посмотреть сообщение
Да знаю я этот полином. Я его понять не могу. Что такое х8? Формулу можно? Или готовую процедуру, что проще на мой взгляд.
На Ассемблере подойдёт?
Bar_boss вне форума  
Непрочитано 25.09.2011, 22:15  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Сообщение от GremLine Посмотреть сообщение
так сойдет ?
Что-то громоздко, как-то. На вики есть функция расчета crc8. Только переворачивать байты данных надо и конечный результат.
Код:
BYTE ReverseByte(BYTE value)
{
    value = ((value & 0xAA) ›› 1) | ((value & 0x55) ‹‹ 1);
    value = ((value & 0xCC) ›› 2) | ((value & 0x33) ‹‹ 2);
    value = ((value & 0xF0) ›› 4) | ((value & 0x0F) ‹‹ 4);
    
    return value;
}

BYTE Crc8Dallas(BYTE len, BYTE *pData)
{
    BYTE crc = 0;
    BYTE i;
    
    while (len--)
    {
        crc ^= ReverseByte(*pData++);
        
        for (i = 0; i ‹ 8; i++)
        crc = crc & 0x80 ? (crc ‹‹ 1) ^ 0x31 : crc ‹‹ 1;
    }
    
    return ReverseByte(crc);
}

Последний раз редактировалось realid; 25.09.2011 в 22:36.
realid вне форума  
Сказали "Спасибо" realid
Easyrider83 (25.09.2011)
Непрочитано 25.09.2011, 22:16  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

а что тут непонятного, полином СRС poly = x8 + x5 + x4 + 1=0x31=110001, т.е. на каждом шаге цикла полином и наше число будет подвергаться XOR, при условии, что старший бит числа не равен нулю, далее сдвигаться, вставляется новый бит и так до конца. В даташите есть блок схема алгоритма, там и надо смотреть.
nonamedov вне форума  
Непрочитано 25.09.2011, 22:20  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Вот код из википедии:
Цитата:
unsigned char Crc8(unsigned char *pcBlock, unsigned int len)
{
unsigned char crc = 0xFF;
unsigned int i;

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

for (i = 0; i ‹ 8; i++)
crc = crc & 0x80 ? (crc ‹‹ 1) ^ 0x31 : crc ‹‹ 1;
}

return crc;
}
nonamedov вне форума  
Непрочитано 25.09.2011, 22:28  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Сообщение от nonamedov Посмотреть сообщение
Вот код из википедии:
Для далласа без изменения он не пойдет. Это просто CRC8. Надо переворачивать входные байты данных и конечный результат. См. выше. Или перевернуть полином и поменять направление сдвига:

Код:
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;
}

Последний раз редактировалось realid; 25.09.2011 в 22:42. Причина: извините
realid вне форума  
Непрочитано 25.09.2011, 22:37  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

А почему у Вас реверсирование не сделано в самом цикле?
nonamedov вне форума  
Непрочитано 25.09.2011, 22:46  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

realid, а нельзя ли соблюдать хоть какую-то хронологию? Зачем экономить на постах, читать ведь не удобно.
nonamedov вне форума  
Непрочитано 25.09.2011, 22:49  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Сообщение от nonamedov Посмотреть сообщение
realid, а нельзя ли соблюдать хоть какую-то хронологию? Зачем экономить на постах, читать ведь не удобно.
Прошу прощения
realid вне форума  
Непрочитано 25.09.2011, 22:57  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Замок на iButton DS1990

Сообщение от nonamedov Посмотреть сообщение
А почему у Вас реверсирование не сделано в самом цикле?
Согласитесь что 0x31 нагляднее чем 0x8C, хотя это просто перевернутый 0x31

Просто на вики двигают старшим битом вперед, а для далласа надо младшим.
realid вне форума  
 
Опции темы

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

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

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


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


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