roboforum.ru

Технический форум по робототехнике.
Текущее время: 22 фев 2025, 10:28

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 20 июл 2014, 11:45 
Не в сети

Зарегистрирован: 20 июл 2014, 11:31
Сообщения: 1
Привет всем .

Нужно написать два скетча и подробно расписать для подсчёта контрольной суммы CRC за вознаграждения , кому интересно пишите на почту. evgenzheka@qip.ru



Есть устройства которое читает данные с контрольной суммой.



Нужен код когда я изменяю любое значения , контрольная сумма рассчитывается
автоматически.





void setup() {

Serial.begin(19200);

}

void loop() {

Serial.write(62);

Serial.write(1);

Serial.write(7);

Serial.write(19);

Serial.write(83);

Serial.write(0);

Serial.write(252);

Serial.write(20);

Serial.write(183); // Контрольная сумма 100110001 P(x) = x8+ x5+ x4+ x0

delay(1000);

}





А во втором коде я не знаю по какой CRC она рассчитывается



void setup() {

Serial.begin(9600);
}

void loop() {

Serial.println("S1B2F02 A010540.00 C0165010.000 E0012143.0 G077.0 H1200 I+050 J060 K02220.0 L02221.0 M02222.0 N02223.0 O02224.0 P01000000 Z6CFE");

delay(1000);

}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 28 июл 2014, 14:42 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Опять АВР. Нет, чтобы взять нормальный контроллер с аппаратным CRC
трололо off


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 28 июл 2014, 15:09 
Не в сети

Зарегистрирован: 03 янв 2012, 12:55
Сообщения: 3298
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...
зато есть аппаратное шифрование :Р


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 28 июл 2014, 19:27 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
трололо on
не обобщаем, xmega = avr, crc аппаратное есть )

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 29 июл 2014, 23:55 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Duhas писал(а):
трололо on
не обобщаем, xmega = avr, crc аппаратное есть )

А бывают ли ардуины на xmega'х?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 30 июл 2014, 00:16 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
и да и нет. из неофициального есть как минимум xmegaduino. официального вроде ничего небыло.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 01 авг 2014, 10:27 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
elmot писал(а):
А бывают ли ардуины на xmega'х?

не суть - был "наезд" на АВР а не на дуино) последние и на армах бывают )

ПС порой надоедает ваша пропаганда "нормальных" контроллеров.

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 01 авг 2014, 17:59 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
А мне другое интересно, эти аппаратные crc считают любой полином? Если нет, то аппаратный crc на фиг не нужен...
Подсчет crc - стандартная задача для контроллера, на все стандартные задачи не напасешься аппаратных перделок.

Вот для crc8 шустрый способ, полином как у 1-wire dallas (кажись):
На сцы:
Код:
//******************************
void CalcCrc8 (unsigned char x)
{
  CrcCalc ^= x;
  x = 0;
  if (CrcCalc & 0x01) x ^= 0x5e;
  if (CrcCalc & 0x02) x ^= 0xbc;
  if (CrcCalc & 0x04) x ^= 0x61;
  if (CrcCalc & 0x08) x ^= 0xc2;
  if (CrcCalc & 0x10) x ^= 0x9d;
  if (CrcCalc & 0x20) x ^= 0x23;
  if (CrcCalc & 0x40) x ^= 0x46;
  if (CrcCalc & 0x80) x ^= 0x8c;
  CrcCalc = x;
}
//******************************


На асм avr:
Код:
CalcCrc8_temp1:
   eor   CrcCalc,temp1
   clr   temp1
   ldi   temp3,0x5e
   sbrc   CrcCalc,0
   eor   temp1,temp3
   ldi   temp3,0xbc
   sbrc   CrcCalc,1
   eor   temp1,temp3
   ldi   temp3,0x61
   sbrc   CrcCalc,2
   eor   temp1,temp3
   ldi   temp3,0xc2
   sbrc   CrcCalc,3
   eor   temp1,temp3   
   ldi   temp3,0x9d
   sbrc   CrcCalc,4
   eor   temp1,temp3   
   ldi   temp3,0x23
   sbrc   CrcCalc,5
   eor   temp1,temp3   
   ldi   temp3,0x46
   sbrc   CrcCalc,6
   eor   temp1,temp3   
   ldi   temp3,0x8c
   sbrc   CrcCalc,7
   eor   temp1,temp3   
   mov   CrcCalc,temp1
   ret


На асм pic:
Код:
CalcCrc8_w
   xorwf   CrcCalc,f
   movlw   0
   btfsc   CrcCalc,0
   xorlw   0x5e
   btfsc   CrcCalc,1
   xorlw   0xbc
   btfsc   CrcCalc,2
   xorlw   0x61
   btfsc   CrcCalc,3
   xorlw   0xc2   
   btfsc   CrcCalc,4
   xorlw   0x9d   
   btfsc   CrcCalc,5
   xorlw   0x23   
   btfsc   CrcCalc,6
   xorlw   0x46   
   btfsc   CrcCalc,7
   xorlw   0x8c   
   movwf   CrcCalc
   return


Ой, опять на pic код красивше avr :roll:


Считаем так для асм:
Код:
   clrf   CrcCalc    ;сбросить регистр crc
   movf   Buf1,w
   call   CalcCrc8_w
   movf   Buf1+1,w
   call   CalcCrc8_w
   movf   Buf1+2,w
   call   CalcCrc8_w
   movf   CrcCalc,w
   xorwf   Buf1+3,w
   btfss   STATUS,Z   ;ошибка crc
   goto   a0_0      ;
;crc верен



Для сцы:
Код:
     CrcCalc = 0;         //пересчитать CRC
     CalcCrc8(RxBuffer[2]);
     CalcCrc8(RxBuffer[3]);
     CalcCrc8(RxBuffer[4]);
     CalcCrc8(RxBuffer[5]);
     CalcCrc8(RxBuffer[6]);
     CalcCrc8(RxBuffer[7]);
     CalcCrc8(RxBuffer[8]);
     CalcCrc8(RxBuffer[9]);
     CalcCrc8(RxBuffer[10]);
     CalcCrc8(RxBuffer[11]);
     CalcCrc8(RxBuffer[12]);


Таблица весов получается так:
Код:
Возмите степени двойки: 1,2,4... и прогоните через пример от производителя -> получите таблицу весов разрядов.
;1=0x31
;2=0x62
;4=0xC4
;8=0xB9
;16=0x43
;32=0x86
;64=0x3D
;128=0x7A


По поиску в гугле "Возмите степени двойки: 1,2,4... и прогоните через пример", найдете источник...

и.т.д. и.т.п.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 01 авг 2014, 18:19 
Не в сети
Аватара пользователя

Зарегистрирован: 01 сен 2009, 14:58
Сообщения: 1142
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python
А так не кошерно?, под любой полином и буфер, чесно слямзено в нете и допилено, когдато давно

Код:
/*******************************************************************************
* Function CalcCrc8
*
* input  - buffer pointer and length
* output - 8 bit CRC
*
* Polinomial  X^8+X5+X^4+1   = 0x131, but use only 0x31,
*                                           why see CRC explanation in web.
*
* NOTE: Lazy, not preformance optimal implementation
*******************************************************************************/

#define CRC8_POLYNOM  0x31

unsigned char CalcCrc8(unsigned char *pcBlock, unsigned long len)
{
    unsigned char crc = 0xFF;
    unsigned long i;

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

        for (i = 0; i < 8; i++)
        {
            crc = crc & 0x80 ? (crc << 1) ^ CRC8_POLYNOM : crc << 1; /*test bit 7, if 1 do xor and shift, if 0 do only shift */
        }
    }

    return crc;
}


Добавлено спустя 5 минут 41 секунду:
Хотя из задачи ТС, я понял что он полином хочет найти из 2 последовательности, вобщем задача криво поставлена


Последний раз редактировалось Aseris 01 авг 2014, 18:21, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 01 авг 2014, 18:22 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Aseris писал(а):
А так не кошерно?


Кошерно, но очень долго.

Добавлено спустя 1 минуту 46 секунд:
откомпили и посмотри какой будет быдлокод.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 01 авг 2014, 22:54 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Dmitry__ писал(а):
А мне другое интересно, эти аппаратные crc считают любой полином? Если нет, то аппаратный crc на фиг не нужен...
Подсчет crc - стандартная задача для контроллера, на все стандартные задачи не напасешься аппаратных перделок.


STM32F07x:
Цитата:
5.2 CRC main features
• Uses CRC-32 (Ethernet) polynomial: 0x4C11DB7
X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2+ X +1
• Alternatively uses a fully programmable polynomial with programmable size (7, 8, 16,
32 bits) (STM32F07x devices only)
• Handles 8-,16-, 32-bit data size
• Programmable CRC initial value
• Single input/output 32-bit data register
• Input buffer to avoid bus stall during calculation
• CRC computation done in 4 AHB clock cycles (HCLK) for 32-bit data


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 01 авг 2014, 23:28 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Посмотрел RM0316, Cyclic redundancy check calculation unit (CRC)
А как же CRC-4-ITU, CRC-5-EPC, CRC-6-ITU, CRC-64-ISO, CRC-128, CRC-256 ???

Programmable polynomial size (7, 8, 16, 32 bit) - всего 4 размерности, ваще бред.

Нет в жизне щастя :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 02 авг 2014, 08:08 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
идеального МК на все случаи жизни не будет никогда, для каждого своя задача и свои требования.. и то что теперь для многих задач удобнее работать на тех же STM не говорит об ущербности AVR

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 02 авг 2014, 08:38 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
причем тут ущербность? просто авры 8бит устарели уже очень давно. кста, я разговаривал с бывшим разработчиком авров. Он сказал, что год назад закрылся их R&D центр по восьмибитникам. только продаваны остались. т.е. новых 8бит авров уже не будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен исполнитель для написания кода CRC для ардуино
СообщениеДобавлено: 02 авг 2014, 08:55 
Не в сети

Зарегистрирован: 03 янв 2012, 12:55
Сообщения: 3298
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...
зачем нам новые, в той области в которой они используются - достаточно
да и китайцы ещё ой как долго будут на этом делать деньги
это всё называется - маркетинг или кто-то хочет денег (представляя нам новую продукцию)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 0


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO