реклама на сайте
подробности

 
 
> DS18B20 вычисление CRC как это сделать?!, Почитал и даташит и апноты, там что то сказано, но не понял я.
eXeC001er
сообщение Jan 24 2006, 07:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 305
Регистрация: 23-02-05
Из: Краснодар
Пользователь №: 2 848



Можно подробнее, а если еще и примерчик что вабще гуд.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kovrov
сообщение Jan 24 2006, 15:55
Сообщение #2


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



на, мил человек, пользуйся и не мучейся :-)
Код
;*******************************************************************************
****
; Вычисление CRC (Х8+X5+X4+1) блока памяти
; в XH:XL надо загрузить начальный адрес блока памяти
; в count количество байт
;.def HiCRC = temp6
;.def LoCRC = temp5  здесь будет CRC8 блока памяти по окончании подпрограммы
;.def BitCount = temp2
;.def temp = r16
;.def count = temp3
;*******************************************************************************
****
CHECK_CRC:
    ldi        temp3,8        ; всего 8 байт
    LDX        (bufer_ds1820)
GetCRC_8:
      ldi     temp,0x18     ; загрузка полинома
      mov     temp6,temp     ; в регистр HiCRC
      clr     temp5         ; обнуление CRC регистра

CRC_Loop:
      ldi        temp2,8         ; указываем 8 бит для подсчета ;
      ld         temp,X+        ; берем байт из буфера

Bit_Loop:
      push     temp         ; сохранение байта в стеке
      eor     temp,temp5     ; xor байта и регистра CRC
      lsr     temp         ; сдвигаем младший бит получившегося байта в перенос
      brcc     Zero_0         ; проверяем младший разряд байта
      eor     temp5,temp6 ; если там 1, то CRC xor полином
Zero_0:
      ror     temp5          ; если там 0, то просто сдвиг CRC регистра
      pop     temp         ; возвращаем байт на место
      lsr     temp         ; и сдвигаем его
      dec     temp2       ;
      brne     Bit_Loop       ; переход на цикл проверки слеующего бита

      dec     temp3         ;
      brne     CRC_Loop     ; переход на следующий байт буфера
      ret


расчитана на вычисление группы байт
под темпы подставишь свои регистры
без труда переделаешь на апдейт CRC каждым новым байтом - что эффективней
типа как тока прочитал байт от 1820 сразу суешь его в эту процедуру


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- eXeC001er   DS18B20 вычисление CRC как это сделать?!   Jan 24 2006, 07:02
- - at90   для кодевижена. Использовалась для ds1990 #pragma ...   Jan 24 2006, 07:09
- - m16   у меня есть рабочий пример на асме авр. вышлю на м...   Jan 24 2006, 07:33
- - eXeC001er   Еще я не особенно врыбуюсь для каких байт считать ...   Jan 24 2006, 07:40
- - GxOST   Цитата(eXeC001er @ Jan 24 2006, 10:02) Мо...   Jan 24 2006, 07:42
- - eXeC001er   эт не то, я не разберусь в этих языках.   Jan 24 2006, 07:58
|- - GxOST   Цитата(eXeC001er @ Jan 24 2006, 10:58) Ци...   Jan 24 2006, 09:08
- - MicronSys   unsigned char one_wire_byte[9]={0x00,0x00,0x00,0x0...   Jan 24 2006, 08:11
- - MicronSys   Цитата(GxOST @ Jan 24 2006, 13:08) Цитата...   Jan 24 2006, 09:18
|- - GxOST   Цитата(MicronSys @ Jan 24 2006, 12:18) Ци...   Jan 24 2006, 11:26
- - haker_fox   В прикрепленной теме есть табличная реализация CRC...   Jan 24 2006, 09:19
- - MicronSys   Вот полный текст для работы с DS1990A #define ON...   Jan 24 2006, 09:27
- - ROC   А на чем пишем-то? ASM, C? Если С, то который? Для...   Jan 24 2006, 09:29
|- - IgorKossak   Цитата(ROC @ Jan 24 2006, 11:29) Что-то у...   Jan 24 2006, 10:11
- - Atashi   ежели памяти полно, а надо быстро, то вот так: cr...   Jan 24 2006, 10:29
- - eXeC001er   to MicronSys а почему здесь 7 а не 8?! for (j ...   Jan 24 2006, 10:41
|- - BVU   Цитата(eXeC001er @ Jan 24 2006, 13:41) to...   Jan 24 2006, 15:49
- - m16   рабочий пример на асме. до восьми датчиков ds1820....   Jan 24 2006, 10:45
- - eXeC001er   вот в айбатонах 8 байт и 8 это CRC! а в термом...   Jan 24 2006, 11:52
- - MicronSys   [quote name='eXeC001er' date='Jan 24 2...   Jan 24 2006, 14:57
|- - GxOST   Цитата(MicronSys @ Jan 24 2006, 17:57) to...   Jan 24 2006, 15:12
- - MicronSys   Бывает   Jan 24 2006, 15:20
- - afe   Я уже давал эту ссылку и на этот вопрос там есть с...   Jan 25 2006, 22:57
- - Pyku_He_oTTyda   Kovrov Не обьясните, как начинающему на пальцах, к...   Feb 1 2006, 05:57
|- - m16   Цитата(Pyku_He_oTTyda @ Feb 1 2006, 08:57...   Feb 1 2006, 06:52
|- - Kovrov   Цитата(Pyku_He_oTTyda @ Feb 1 2006, 08:57...   Feb 2 2006, 17:22
- - Atashi   ... давненько не был здесь; похоже, сомнения насче...   Feb 1 2006, 08:27
- - Pyku_He_oTTyda   m16 Торнутая в морду лица ссылка помогла, мозги за...   Feb 1 2006, 10:21
|- - m16   Цитата(Pyku_He_oTTyda @ Feb 1 2006, 13:21...   Feb 1 2006, 11:47
- - Pyku_He_oTTyda   С СRС разобрался вчера на базе примера от Kovrov. ...   Feb 2 2006, 06:14
- - Atashi   Да, 01 участвует. Вообще, алгоритм-то универсальн...   Feb 2 2006, 13:16
- - d__   Вот еще один вариант реализации на языке С. Характ...   Feb 2 2006, 17:42
- - Pyku_He_oTTyda   Kovrov Разве неправильно я расписал для 1990? П...   Feb 3 2006, 05:54
|- - Kovrov   Цитата(Pyku_He_oTTyda @ Feb 3 2006, 08:54...   Feb 3 2006, 10:38
- - Pyku_He_oTTyda   01 1E 06 CA 0C 00 00 70 Это конкретный ключ, пров...   Feb 3 2006, 11:38
|- - Kovrov   Цитата(Pyku_He_oTTyda @ Feb 3 2006, 14:38...   Feb 3 2006, 17:59
|- - ilya514   Цитата(Pyku_He_oTTyda @ Feb 3 2006, 14:38...   Feb 7 2006, 13:21
- - Kovrov   посмотрел на твой исходник ты в твоем случае 8ой б...   Feb 3 2006, 18:26
- - Pyku_He_oTTyda   Проблемы нет, просто хотелось уточнить все до конц...   Feb 6 2006, 05:49
- - Pyku_He_oTTyda   И вопрос в догонку: Если на шине присутствует подч...   Feb 8 2006, 05:53
|- - add   Цитата(Pyku_He_oTTyda @ Feb 8 2006, 08:53...   Feb 8 2006, 07:12
|- - Kovrov   Цитата(Pyku_He_oTTyda @ Feb 8 2006, 08:53...   Feb 8 2006, 07:34
- - Pyku_He_oTTyda   Цитатана счет 60 мкс - я не понял - речь идет о pr...   Feb 8 2006, 09:27
- - Kovrov   Presence pulsе делай по максимуму возможному а то...   Feb 8 2006, 10:00
- - Pyku_He_oTTyda   Ага, понятно, спасибо! А проснется процессор п...   Feb 8 2006, 10:46
- - Kovrov   если на инт0 посадишь то вообще может от любого шо...   Feb 8 2006, 10:52
- - PLATRO   парни а ниукаво нету просто проги для подсчета CRC...   Jun 13 2006, 17:58
|- - defunct   Цитата(PLATRO @ Jun 13 2006, 20:58) парни...   Jun 14 2006, 01:21
- - PLATRO   да в том то и фишка что я знаю тока vb )) и компил...   Jun 14 2006, 10:31
- - TomaT   Вот, может поможет чем... http://www.easics.com/we...   Jun 14 2006, 10:42
- - PLATRO   ну как я понял это штука тоже код на чомто генерит...   Jun 16 2006, 11:57
- - Nanobyte   Если это ключик от Dallas, то последние две цифры ...   Jun 16 2006, 13:03
- - PLATRO   вот там написано чтото вроде вот этого: 20 ...   Jun 16 2006, 14:39
- - Nanobyte   В Вашем случае: 01-Family code (DS1990) 20-CRC 00....   Jun 16 2006, 17:09
- - PLATRO   Опа! Спасибо бааааальшое! Осталось только...   Jun 16 2006, 19:08
- - Nanobyte   Посмотрите ещё и здесь: Имитатор Touch-Memory http...   Jun 16 2006, 19:43
- - PLATRO   да это слишком сложный. мне нада на один ключ   Jun 16 2006, 23:43


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 01:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016