Перейти к содержанию
    

Ещё один метод расчёта CRC16

5 minutes ago, uni said:

Почему же не уточняет?

Это был риторический вопрос. Однако, напишите тут: сколько кБ в сек? максимум

 

5 minutes ago, uni said:

Применение: avr и modbus

C# на avr? Наверно я "отстал от поезда" ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для AVR8 есть более для меня интересный вопрос. Поскольку архитектура с раздельной памятью программ и ОЗУ, то мне интересно могу ли я считать также быстро как с табличным методом и при этом сэкономить 128 команд или 256 байт ОЗУ. Это бывает важно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, Forger сказал:

Вот все говорят о некой оптимальности этого архаичного CRC16, однако, никто не уточняет о каком потоке данных идет речь? Сколько кБ в сек?

Худший из худших случаев - рассчитать CRC по некому массиву данных в ОЗУ с максимальной скоростью.

Понятное дело, если поток данных неспешный и более-менее постоянный, то эти "не оптимальные такты" размажутся.

Чтобы сравнить два алгоритма между собой, нужно провести синтетический тест.

В данном случае (поскольку код @uni зависит от набора данных) измерить худшее время выполнения алгоритма, и сравнить с временем, затрачиваемым, например, при расчете табличным методом (оно там постоянно). Ну и это, конечно же, на неком постоянном объеме ОЗУ (шоб CPU с максимальной скоростью щелкал этот расчет).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К примеру, в теме про DDS я мог бы "прошивать" modbus'ом таблицу сигналов (256 байт), вместо того, чтобы хранить таблицу для crc16. Это гипотетический пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, Arlleex said:

Худший из худших случаев - рассчитать CRC по некому массиву данных в ОЗУ с максимальной скоростью.

Нет, все зависит от реально максимального потока данных через некий канал, т.е. возможности самого этого канала.

Если речь стоит о неком синтетическом тесте, отвязанном от реальности, польза от которого - померятся "приборами", то это уже совсем другая задача ))

 

Я к чему все  это - архаичная crc16 применятся со времен войны 1812 года, когда все ходили пешком и память была на вес золота.

На стороне МК чаще всего используют табличный метод, он не жрет ОЗУ, таблица - константа, под некий заранее известный полином. 

Если полином предполагается менять по ходу работы устройства, то вычисляемая таблица.

 

На стороне компа/плашнета/смартфона - вообще до лампочки какой алгоритм, там эти накладные расходы никакой роли не играют для реальных потоков данных.

 

ps Мне кажется, я забрел в какую-то лютую тему: avr8 + C# + оператор new, при этом идут разговоры об оптимизациии ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, uni сказал:

К примеру, в теме про DDS я мог бы "прошивать" modbus'ом таблицу сигналов (256 байт), вместо того, чтобы хранить таблицу для crc16. Это гипотетический пример.

В современных реалиях вопрос 256 байт не должен быть вопросом в принципе.

Ну раз архитектура допотопная AVR и памяти нет - то увы, об оптимальности не будет речи.

Если нет ОЗУ - располагайте во Flash и вычитывайте оттуда, но это будет медленнее, чем из RAM.

Если много RAM - размещайте в ней и пользуйтесь табличным расчетом, он, ИМХО, будет быстрее вашего алгоритма.

Если данные идут неспешно и не надо обсчитывать блок данных в определенный временной интервал - используйте любой алгоритм, обрабатывая каждое полуслово по мере его прихода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, Forger said:

avr8 + C# + оператор new

идиотия процветает, да..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, Forger сказал:

На стороне МК чаще всего используют табличный метод, он не жрет ОЗУ, таблица - константа, под некий заранее известный полином. 

Ну, я бы тут поспорил :) Вот я привёл пример DDS на ATmega8535, там памяти ОЗУ всего 512 байт. Половина памяти отойдёт под таблицу :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, uni said:

Ну, я бы тут поспорил :) Вот я привёл пример DDS на ATmega8535, там памяти ОЗУ всего 512 байт. Половина памяти отойдёт под таблицу :)

Таблицу нужно хранить в ОЗУ, если полином может меняться по ходу пьесы. Если нет, то ее можно посчитать заранее и хранить во flash, озу не тратиться!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я поэтому и упомянул avr8 архитектуру, т.к. с ней как раз есть тонкие вопросы. Есть Arduino, на них основанная. Так что всё равно кому-нибудь, да пригодится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, uni said:

 Есть Arduino, на них основанная. Так что всё равно кому-нибудь, да пригодится.

На arduino уже пишут под C#?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, Forger сказал:

На arduino уже пишут под C#?

Я разве где-то об этом писал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, uni said:

Я разве где-то об этом писал?

Да, см. самый первый пост, он на C#, там это указано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, Forger сказал:

См. первый пост, он на C#

Да, первый пост содержит код на C#.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...