aleksandr-zh 4 4 января, 2021 Опубликовано 4 января, 2021 · Жалоба 3 часа назад, mantech сказал: 3 часа назад, jcxz сказал: С таким количеством ресурсов быстродействия как в аллвинере, можно и программно UART эмулировать. Да, мысли были Правильные мысли :) - проще программно! Аппаратный в вашем случае не имеет никаких плюсов. Единственно, обмен (точнее, ожидание ответа) придётся несколько изворотливо делать: иногда отвечают через 50 mS, а иногда 350 mS или более. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 4 января, 2021 Опубликовано 4 января, 2021 · Жалоба 4 минуты назад, aleksandr-zh сказал: (точнее, ожидание ответа) придётся несколько изворотливо делать: Дак это-то не проблема, как придет, так и ладно, и на четность(9 бит) можно положить, ибо это полудуплексный мастер-слейв протокол, там синхронизация первого байта особо и не нужна, а вот передача слейву строго требует 9 бит ... 7 минут назад, aleksandr-zh сказал: Правильные мысли :) - проще программно! Программно - это надо еще как минимум один таймер, а таймера в AW- говно, что-то они там недокрутили и синхронизация теряется (или пропускает прерывания - х.з.) вообщем таймеров в пуле 3, но по-нормальному можно использовать только один((( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 4 января, 2021 Опубликовано 4 января, 2021 · Жалоба 2 часа назад, mantech сказал: В догонку еще))) Нет-ли какого-то простого и быстрого алгоритма определения четного\нечетного числа, или только по таблице? x = x ^ x << 4; x = x ^ x << 2; x = x ^ x << 1; результат в 7-м бите 41 минуту назад, mantech сказал: Программно - это надо еще как минимум один таймер Зачем ещё? Вы же писали что "уже эмулируется другой UART". Какая разница - один UART на этом таймере эмулировать или N UART-ов? Таймер всё равно нужен только один. Цитата а таймера в AW- говно, что-то они там недокрутили и синхронизация теряется Это странно. Я бы поискал причину такого. Иначе возникают сомнения в отсутствии серьёзных багов в ПО. И обычно эмуляция UART делается на связке таймер+DMA (и RX и TX). Ещё можно на SPI и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 4 января, 2021 Опубликовано 4 января, 2021 · Жалоба 5 минут назад, jcxz сказал: x = x ^ x << 4; x = x ^ x << 2; x = x ^ x << 1; Че-то сходу понять это не получается, НГ наверно виноват))) Но интересно, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 4 января, 2021 Опубликовано 4 января, 2021 · Жалоба 2 минуты назад, mantech сказал: Че-то сходу понять это не получается, НГ наверно виноват))) Но интересно, спасибо. Всего 3 ARM-команды должно быть - быстрее чем через таблицу или также. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 4 января, 2021 Опубликовано 4 января, 2021 · Жалоба 2 минуты назад, jcxz сказал: Всего 3 ARM-команды должно быть - быстрее чем через таблицу или также. Нее, я не об этом, просто пока саму логику не понял))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aleksandr-zh 4 5 января, 2021 Опубликовано 5 января, 2021 · Жалоба 14 часов назад, mantech сказал: а вот передача слейву строго требует 9 бит Это я знаю, я его еще первых версий месяц грыз, тихонько поругиваясь на извраты ))) Я ранее и писал, что слейв может ответить как угодно: и через 50, и через 350 mS...Года-полтора в Питере контору спасал: MDB устройства + RFID. Они заказали дяденьке, а он их промурыжил и "опа, а завтра же выставка!". И я как пап Карл за пару ночей на макетке )))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 5 января, 2021 Опубликовано 5 января, 2021 · Жалоба 15 часов назад, mantech сказал: Нее, я не об этом, просто пока саму логику не понял))) Сначала делается "Исключающее побитовое ИЛИ" над полубайтами. Там, где была пара единичек или нулей, в результате получится ноль. Теперь остается 4 бита - делаем такую же операцию, но в операндах по 2 бита. Останется 2 бита - делаем такую же операцию, но в операндах по 1 биту (6-й и 7-й). В итоге в 7-м бите будет лежать признак нечетности количества единичек в символе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 5 января, 2021 Опубликовано 5 января, 2021 · Жалоба 54 минуты назад, Arlleex сказал: Сначала делается Теперь понял, спасибо! Но все-равно пришлось бросить эту затею и делать программный порт, ибо эти уарты абсолютно невменяемы, т.е. он работает в режиме четности, но переключение ODD\EVEN на лету не отрабатывается, и да, SPACE и MARK там не реализованы, дерьмо вообщем, хотя уж если так, то как мне хотелось вбить керно в голову этих разработчиков протоколов с четностями/ 9, 10ми битами и пр. дрянью, сколь не делал протоколов обмена, всегда 8N1 хватало, злость вообщем пробирает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться