Forger 26 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 5 minutes ago, uni said: Почему же не уточняет? Это был риторический вопрос. Однако, напишите тут: сколько кБ в сек? максимум 5 minutes ago, uni said: Применение: avr и modbus C# на avr? Наверно я "отстал от поезда" )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uni 6 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Для AVR8 есть более для меня интересный вопрос. Поскольку архитектура с раздельной памятью программ и ОЗУ, то мне интересно могу ли я считать также быстро как с табличным методом и при этом сэкономить 128 команд или 256 байт ОЗУ. Это бывает важно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 4 минуты назад, Forger сказал: Вот все говорят о некой оптимальности этого архаичного CRC16, однако, никто не уточняет о каком потоке данных идет речь? Сколько кБ в сек? Худший из худших случаев - рассчитать CRC по некому массиву данных в ОЗУ с максимальной скоростью. Понятное дело, если поток данных неспешный и более-менее постоянный, то эти "не оптимальные такты" размажутся. Чтобы сравнить два алгоритма между собой, нужно провести синтетический тест. В данном случае (поскольку код @uni зависит от набора данных) измерить худшее время выполнения алгоритма, и сравнить с временем, затрачиваемым, например, при расчете табличным методом (оно там постоянно). Ну и это, конечно же, на неком постоянном объеме ОЗУ (шоб CPU с максимальной скоростью щелкал этот расчет). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uni 6 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба К примеру, в теме про DDS я мог бы "прошивать" modbus'ом таблицу сигналов (256 байт), вместо того, чтобы хранить таблицу для crc16. Это гипотетический пример. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 9 minutes ago, Arlleex said: Худший из худших случаев - рассчитать CRC по некому массиву данных в ОЗУ с максимальной скоростью. Нет, все зависит от реально максимального потока данных через некий канал, т.е. возможности самого этого канала. Если речь стоит о неком синтетическом тесте, отвязанном от реальности, польза от которого - померятся "приборами", то это уже совсем другая задача )) Я к чему все это - архаичная crc16 применятся со времен войны 1812 года, когда все ходили пешком и память была на вес золота. На стороне МК чаще всего используют табличный метод, он не жрет ОЗУ, таблица - константа, под некий заранее известный полином. Если полином предполагается менять по ходу работы устройства, то вычисляемая таблица. На стороне компа/плашнета/смартфона - вообще до лампочки какой алгоритм, там эти накладные расходы никакой роли не играют для реальных потоков данных. ps Мне кажется, я забрел в какую-то лютую тему: avr8 + C# + оператор new, при этом идут разговоры об оптимизациии ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 1 минуту назад, uni сказал: К примеру, в теме про DDS я мог бы "прошивать" modbus'ом таблицу сигналов (256 байт), вместо того, чтобы хранить таблицу для crc16. Это гипотетический пример. В современных реалиях вопрос 256 байт не должен быть вопросом в принципе. Ну раз архитектура допотопная AVR и памяти нет - то увы, об оптимальности не будет речи. Если нет ОЗУ - располагайте во Flash и вычитывайте оттуда, но это будет медленнее, чем из RAM. Если много RAM - размещайте в ней и пользуйтесь табличным расчетом, он, ИМХО, будет быстрее вашего алгоритма. Если данные идут неспешно и не надо обсчитывать блок данных в определенный временной интервал - используйте любой алгоритм, обрабатывая каждое полуслово по мере его прихода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 2 minutes ago, Forger said: avr8 + C# + оператор new идиотия процветает, да.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uni 6 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 1 минуту назад, Forger сказал: На стороне МК чаще всего используют табличный метод, он не жрет ОЗУ, таблица - константа, под некий заранее известный полином. Ну, я бы тут поспорил :) Вот я привёл пример DDS на ATmega8535, там памяти ОЗУ всего 512 байт. Половина памяти отойдёт под таблицу :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Just now, uni said: Ну, я бы тут поспорил :) Вот я привёл пример DDS на ATmega8535, там памяти ОЗУ всего 512 байт. Половина памяти отойдёт под таблицу :) Таблицу нужно хранить в ОЗУ, если полином может меняться по ходу пьесы. Если нет, то ее можно посчитать заранее и хранить во flash, озу не тратиться! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uni 6 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Я поэтому и упомянул avr8 архитектуру, т.к. с ней как раз есть тонкие вопросы. Есть Arduino, на них основанная. Так что всё равно кому-нибудь, да пригодится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Just now, uni said: Есть Arduino, на них основанная. Так что всё равно кому-нибудь, да пригодится. На arduino уже пишут под C#? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uni 6 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Только что, Forger сказал: На arduino уже пишут под C#? Я разве где-то об этом писал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 1 minute ago, uni said: Я разве где-то об этом писал? Да, см. самый первый пост, он на C#, там это указано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uni 6 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Только что, Forger сказал: См. первый пост, он на C# Да, первый пост содержит код на C#. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба По-моему я попал в "шестую палату" .. Братцы, выручайте ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться