Например TDA7294

Форум РадиоКот • Просмотр темы - Хитрые, необычные алгоритмы и код
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 14:03:54

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 210 ]     ... , , , 9, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Вс мар 03, 2019 08:33:10 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
а я вот столкнулся с таким "необычным" кодом :)
Код:
                      mov     R30, R31
                      clr     R31
                      sbrc    R30, 7
                      ser     R31
                      ret
это подпрограммка, которая в регистровой паре Z (R31:R30) получает двухбайтное число... что она делает? :))) долго я ломал голову над смыслом этой подпрограммы... кто первым догадается, что происходит?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Вс мар 03, 2019 08:57:11 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Сдвигает это знаковое 16-ти битное целое на 8 бит вправо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Вс мар 03, 2019 13:59:49 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Ну никакой интриги...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Вс мар 03, 2019 16:54:22 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ну никакой интриги...

Попробую тогда я. Что делает эта функция?
Код:
uint8_t myfunc(uint8_t v)
{
  v^=v>>4;
  return(0x6>>((v^(v>>2))&3)&1);
}


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Вс мар 03, 2019 18:39:12 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
вообще говоря, это какая-то загадка, а не хитрый алгоритм... не знаю, так ли это, но похоже, она выдает сумму битов числа по модулю 2.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Вс мар 03, 2019 19:03:25 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 1
похоже, она выдает сумму битов числа по модулю 2.

Проверка на четность.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Вс мар 03, 2019 19:35:22 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Проверка на четность.

Именно так. Многие CPU не умеют сами считать бит четности. Расчет четности в цикле требует заметно больше операций, чем обмен полубайтами, XOR, два сдвига, AND, XOR и снова AND.

Добавлено after 16 minutes 42 seconds:
Еще одна необычная функция. Полезна для CPU с конвеерной архитектурой, так как позволяет избежать команд условного перехода.
Код:
int myfunc(int x, int y)
{
  return (x^((x^y)&-(x<y)));
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Вс мар 03, 2019 19:50:17 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Еще одна необычная функция. Полезна для CPU с конвеерной архитектурой, так как позволяет избежать команд условного перехода.

Проверил на STM32F0, max() работает где-то на треть быстрее, а на M3/M4 уже есть инструкция IT, тогда можно вообще без перехода обойтись.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Вс мар 03, 2019 19:59:06 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Так от оптимизатора еще многое зависит. Если оптимизатор влепит уловный переход сам, выигрыша не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пн мар 04, 2019 07:52:20 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
а где эта проверка на четность используется? не раз встречал в "теории" упоминание о ней, но на практике никогда не сталкивался...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пн мар 04, 2019 08:10:48 
Держит паяльник хвостом

Карма: 10
Рейтинг сообщений: 99
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 965
Рейтинг сообщения: 0
Да мало ли. К примеру, у вас софтовый UART. Вот и простенькая защита.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пн мар 04, 2019 09:01:26 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
а где эта проверка на четность используется? не раз встречал в "теории" упоминание о ней, но на практике никогда не сталкивался...

Проверка на четность используется в случаях, когда есть повышенные требования к надежности передачи данных или достоверности их хранения, а вычислительные ресурсы не позволяют воспользоваться БЧХ-кодами или даже кодом Хемминга.
Контрольные суммы позволяют надежно детектировать только одиночную ошибку (один бит) в блоке данных. Несмотря на то, что вероятность совпадения контрольной суммы при возникновении двух ошибок в блоке данных очень мала, она существует. Криптографические функции двойную ошибку детектируют всегда, но ценой весьма приличных затрат на вычисление криптографического хеша.
Четность же считается очень быстро, нередко аппаратным путем (например в UART), но при этом позволяет детектировать одиночные ошибки (бит четности на байт), исправлять одиночные (или детектировать тройные) и детектировать двойные ошибки (дополнительно байт перекрестной четности на блок данных) или даже исправлять двойные (или детектировать пятерные) и детектировать четверные (дополнительный байт перекрестной циклической четности на блок данных).

Байт перекрестной четности - это сумма по модулю 2 всех байтов блока плюс собственный 9-й бит четности.
Байт перекрестной циклической четности - это тоже сумма по модулю 2 всех байтов блока, но после каждого суммирования циклически сдвигаемая на один бит.

Впервые с этим подходом я столкнулся в начале 80-х на магнитных лентах ЕС ЭВМ (IBM-370).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пн мар 04, 2019 09:33:57 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
меня интересовала конкретика: например, на каком-то там уровне TCP/IP, или там в каком-нибудь ModBus-е... т.е. кокнертные применения, с которыми я просто не имел дела в силу своего дремучего любительства. а все эти рассказы о том, где и как - это я еще из лекций ВУЗа помню.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пн мар 04, 2019 09:59:07 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
В старой технике контроль четности использовался сплошь и рядом (как в последовательных, так и в параллельных интерфейсах). В современной - вытесняется БЧХ-кодами.
UART, в качестве примера, Вам уже привели. SCSI и PCI, боюсь, Вам не слишком интересны.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пн мар 04, 2019 14:51:12 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ПростоНуб писал(а):
UART, в качестве примера, Вам уже привели
UART имеет такую возможность, но вопрос в том, где эта возможность используется? я ни разу не встречал устройств, работающих через RS-232, в которых бы использовалась опция "бита четности". хотя в настройках драйвера она присутствует, но на моеём веку ни разу не была установлена.
ПростоНуб писал(а):
SCSI и PCI
в них на самом деле используется бит четности? аж не верится... но вообще таки да, страшно далеки они от народа :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пн мар 04, 2019 15:40:53 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
UART имеет такую возможность, но вопрос в том, где эта возможность используется?

PS/2 клава с мышкой, при чтении то все равно, но при записи они игнорят посылаемые команды если бит четности не совпадает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пн мар 04, 2019 15:46:48 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Reflector писал(а):
PS/2 клава с мышкой
благодарю!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пн мар 04, 2019 16:18:25 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
страшно далеки они от народа :)

Хотите ближе к народу, тогда могу назвать расширения на базе проверки на четность. Например LDPC (Low-density parity-check code), который используется в:
- 802.3an (10Gb Ethernet)
- ряд DVB стандартов (Digital video broadcasting)
- WiMAX
- 802.11n (WiFi)

Добавлено after 6 minutes 23 seconds:
UART имеет такую возможность, но вопрос в том, где эта возможность используется?

Я наоборот, часто нарывался в местах, где допускается длина кабеля RS-232 свыше 3м (10ft). При этом до сих пор попадается 7E1, когда код передачи 7-битный.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пт мар 08, 2019 16:45:52 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 12
Зарегистрирован: Чт апр 04, 2013 22:22:57
Сообщений: 1357
Откуда: Белгород, РФ
Рейтинг сообщения: 0
UART имеет такую возможность, но вопрос в том, где эта возможность используется? я ни разу не встречал устройств, работающих через RS-232, в которых бы использовалась опция "бита четности". хотя в настройках драйвера она присутствует, но на моеём веку ни разу не была установлена.


Некоторые ПЛК используют, причем там есть бит четности или нечетности, один раз встречал, просто поставил в настройках конвертора Ethernet-RS232 эту опцию и всё заработало ))
Смысла не было особого, так как там применялся Modbus с более "сильной" проверкой на ошибки.
И мне лично непонятно как эта защита себя проявит, например в Modbus я увижу ошибку в логе сервера. А ошибка низкого уровня как себя проявит, просто блокирует дальнейшую передачу? Это же личное дело конвертора и ПЛК, оба на удаленном объекте, на верхний уровень они не сообщат об ошибке.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Хитрые, необычные алгоритмы и код
СообщениеДобавлено: Пт мар 08, 2019 18:42:36 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А ошибка низкого уровня как себя проявит, просто блокирует дальнейшую передачу?

Нет, конечно. Просто сообщит на верхний уровень о наличии ошибки.
А что может верхний уровень с этим делать я уже писал выше:
ПростоНуб писал(а):
Четность же считается очень быстро, нередко аппаратным путем (например в UART), но при этом позволяет детектировать одиночные ошибки (бит четности на байт), исправлять одиночные (или детектировать тройные) и детектировать двойные ошибки (дополнительно байт перекрестной четности на блок данных) или даже исправлять двойные (или детектировать пятерные) и детектировать четверные (дополнительный байт перекрестной циклической четности на блок данных).


Добавлено after 1 hour 33 minutes 15 seconds:
Подкину еще хитрый алгоритм - CORDIC https://ru.wikipedia.org/wiki/CORDIC . Кстати, его реализация STMicro достаточно удобная и применима почти на любом МК: https://www.st.com/content/ccc/resource ... 441302.pdf


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 210 ]     ... , , , 9, ,  

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


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y