mantech 7 January 4, 2021 Posted January 4, 2021 (edited) · Report post Приветствую! Вопрос на засыпку))) Нужно передавать первый байт с установленным 9м битом в 1, остальные в 0 (протокол MDB), но порт 16550 совместимый, как-то можно его заставить работать в таком режиме? Может с четностью как-то "поиграть" можно? Пока до конца не понял, чем отличается ODD от EVEN режима... Есть какие-мнения? Edited January 4, 2021 by mantech Quote Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 45 January 4, 2021 Posted January 4, 2021 · Report post Да, только с четностью играть. ODD и EVEN отличаются полярностью, но они вам не подходят, ибо зависят от содержимого передаваемого байта. Там есть еще два варианта - "принудительно 1" и "принудительно 0" - вот они вам подойдут. И с FIFO придется отключить как минимум на время передачи адресного байта. Quote Share this post Link to post Share on other sites More sharing options...
mantech 7 January 4, 2021 Posted January 4, 2021 · Report post 4 часа назад, Сергей Борщ сказал: Там есть еще два варианта - "принудительно 1" и "принудительно 0" - вот они вам подойдут. А можно по-подробнее, где это задается, не увидел... 4 часа назад, Сергей Борщ сказал: ODD и EVEN отличаются полярностью, но они вам не подходят, ибо зависят от содержимого передаваемого байта Ну в принципе, можно анализировать 0й бит передаваемого байта (0-четный 1 нечет) но если при четном байте поставить ODD, что будет в бите четности? Анализатора нет посмотреть. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 50 January 4, 2021 Posted January 4, 2021 · Report post 11 минут назад, mantech сказал: Ну в принципе, можно анализировать 0й бит передаваемого байта (0-четный 1 нечет) но если при четном байте поставить ODD, что будет в бите четности? Анализатора нет посмотреть. Чётным/нечётным должно быть не передаваемое число, а количество единичных бит в нём. UART считает это количество и дополняет его до чётного или нечётного (в зависимости от конфига - even/odd). Quote Share this post Link to post Share on other sites More sharing options...
mantech 7 January 4, 2021 Posted January 4, 2021 · Report post 1 минуту назад, jcxz сказал: а количество единичных бит в нём. Т.е. 1,3,5,7 единиц - нечетное получается? Quote Share this post Link to post Share on other sites More sharing options...
jcxz 50 January 4, 2021 Posted January 4, 2021 · Report post 1 минуту назад, mantech сказал: Т.е. 1,3,5,7 единиц - нечетное получается? да Quote Share this post Link to post Share on other sites More sharing options...
mantech 7 January 4, 2021 Posted January 4, 2021 · Report post 1 минуту назад, jcxz сказал: да Понял, тогда " дополняет его до чётного или нечётного (в зависимости от конфига - even/odd)." в таком случае, при заданном ODD что будет в бите четности 0 или 1 ? Quote Share this post Link to post Share on other sites More sharing options...
jcxz 50 January 4, 2021 Posted January 4, 2021 · Report post 25 минут назад, mantech сказал: А можно по-подробнее, где это задается, не увидел... https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcommstate https://docs.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-dcb 4 минуты назад, mantech сказал: Понял, тогда " дополняет его до чётного или нечётного (в зависимости от конфига - even/odd)." в таком случае, при заданном ODD что будет в бите четности 0 или 1 ? Ну там же всё просто! Смотрите на картинку вверху страницы: https://en.wikipedia.org/wiki/Parity_bit Quote Share this post Link to post Share on other sites More sharing options...
mantech 7 January 4, 2021 Posted January 4, 2021 · Report post 3 минуты назад, jcxz сказал: https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcommstate https://docs.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-dcb Это здрово, конечно в регистрах бы это посмотреть... The parity scheme to be used. This member can be one of the following values. TABLE 4 Value Meaning EVENPARITY 2 Even parity. MARKPARITY 3 Mark parity. NOPARITY 0 No parity. ODDPARITY 1 Odd parity. SPACEPARITY 4 Space parity. MARKPARITY и SPACEPARITY имеется ввиду? 6 минут назад, jcxz сказал: Ну там же всё просто! Смотрите на картинку вверху страницы: Спасибо, да действительно все нарисовано))) Quote Share this post Link to post Share on other sites More sharing options...
jcxz 50 January 4, 2021 Posted January 4, 2021 · Report post 1 минуту назад, mantech сказал: Это здрово, конечно в регистрах бы это посмотреть... В даташите на ваш чип должно быть. 1 минуту назад, mantech сказал: MARKPARITY и SPACEPARITY имеется ввиду? да. На https://en.wikipedia.org/wiki/Parity_bit тоже это описано. Quote Share this post Link to post Share on other sites More sharing options...
mantech 7 January 4, 2021 Posted January 4, 2021 · Report post 1 минуту назад, jcxz сказал: В даташите на ваш чип должно быть. Да вот этого и не нашел. УАРТ в аллвиннере, пишут, что 16550 совместимый, может не так уж совместимый... Quote Share this post Link to post Share on other sites More sharing options...
jcxz 50 January 4, 2021 Posted January 4, 2021 · Report post 4 минуты назад, mantech сказал: Да вот этого и не нашел. УАРТ в аллвиннере, пишут, что 16550 совместимый, может не так уж совместимый... совместимый != идентичный. Что-то может отсутствовать. PS: С таким количеством ресурсов быстродействия как в аллвинере, можно и программно UART эмулировать. Quote Share this post Link to post Share on other sites More sharing options...
mantech 7 January 4, 2021 Posted January 4, 2021 · Report post 10 минут назад, jcxz сказал: С таким количеством ресурсов быстродействия как в аллвинере, можно и программно UART эмулировать. Да, мысли были, но там уже и так один эмулируется по причине того, что их всего три, но с другой стороны, скорость всего 9600, поэтому больших проблем быть не должно... Quote Share this post Link to post Share on other sites More sharing options...
mantech 7 January 4, 2021 Posted January 4, 2021 · Report post 1 час назад, jcxz сказал: тоже это описано. В догонку еще))) Нет-ли какого-то простого и быстрого алгоритма определения четного\нечетного числа, или только по таблице? Quote Share this post Link to post Share on other sites More sharing options...
mdmitry 0 January 4, 2021 Posted January 4, 2021 · Report post Может быть полезно посмотреть главу 5 в книге "Алгоритмические трюки для программистов", второе издание, Генри Уоррен, мл. , 2014 Quote Share this post Link to post Share on other sites More sharing options...