Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Коя е минималната скорост на SerialPort на PC?
http://mcu-bg.com/mcu_site/viewtopic.php?f=16&t=14270
Страница 1 от 3

Автор:  NikB [ Пет Яну 08, 2016 2:55 pm ]
Заглавие:  Коя е минималната скорост на SerialPort на PC?

Коя е минималната скорост на SerialPort на PC?
Някой знае ли къде да прочета за ограниченията?
Като програмирам да бъде под 200 бода се установява скоростта по подразбиране за порта (примерно 115200)
(В Serial port си пише колкото съм задал, но реалните импулси са къси :))
Как да му се чудя?

Автор:  syscop [ Пет Яну 08, 2016 3:03 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

https://en.wikibooks.org/wiki/Serial_Pr ... rogramming

Автор:  NikB [ Пет Яну 08, 2016 3:28 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

syscop написа:
https://en.wikibooks.org/wiki/Serial_Programming/8250_UART_Programming

Тоя документ е за някакви други PC-та :) по-старички.
Нямам проблем да сложа 2 000 000 бода, а според тая документация повече от 115 200 е невъзможно.

Автор:  syscop [ Пет Яну 08, 2016 3:57 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

Доколкото знам на стандартния rs-232 на pc-то без значение колко е старо часовникът е един. Ако става въпрос за разни високоскоростни платки, usb<->rs232 и .т.н е друго - четеш им документацията.

Автор:  NikB [ Пет Яну 08, 2016 4:13 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

Под Win, освен оня таймер на 18ms, е достъпен и прецизен таймер, който знае тиковете на процесора и може да ги превръща в us.
Но дори това не е толкова важно.
Явно, не мога да намеря кое да прочета - в последните години не ми се е налагало да чета описанията на чиповете, има си Win API за всичко :).
Но тоя път не става :).
Дори DCB, в което има скорост 110 б/с не се справя с тоя проблем :)
DCB: Defines the control setting for a serial communications device

Автор:  Wise [ Пет Яну 08, 2016 4:31 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

Е хипер терминалът си бачка на 110 бода / това е минимума според мен/

//едно време телетайпите работеха с тая скорост!

Автор:  syscop [ Пет Яну 08, 2016 4:55 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

Във sdk-то дето го имам на компа е дефиниран минимален CBR_110. Теоретично минималното може да се сметне като: 1843200 / (16 * 65536) :).

Автор:  NikB [ Пет Яну 08, 2016 5:44 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

Както каза syscop, вероятно е така за апаратните RS-232.
Но при инициализация на USB-UART на скорост под 184 б/с WinAPI не се оплаква,в съответното поле си пише каквото сме записали, UART работи (изпраща, получава), но не на скоростта, на която сме задали.
И не виждам как с Win API средства да определя ограниченията.
И поне 15 минути търсих с гугъла.

Както и да е - просто бях решил, че това е най-лесния начин да пусна импулси по няколко стотин мс за една проба.
Оказа се, че максимумът, който успех да постигна, е към 50мс (байт 0, на скорост 184 б/с).

Автор:  syscop [ Пет Яну 08, 2016 5:56 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

По-горе написах - чети документацията(ако има). Ти комуникираш с драйвера, не с желязото, следователно трябва да знаеш как да си поискаш скоростта, която ти трябва. Възможно е през win api да не можеш да постигнеш това, което искаш. Преди години писах комуникация за едни високоскоростни платки, та там бяха направили клока по-голям, съответно като искаш малка скорост - няма, иначе на 921600 бяха "пушка".

Автор:  ike [ Пет Яну 08, 2016 6:05 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

Не чети документацията ами ръгни осцилоскоп и тествай.
Повечето имат генератор на фиксирана честота и 16 битов делител. А някой имат FLL https://en.wikipedia.org/wiki/Frequency-locked_loop и за всеки чип/чипсет си е различно.
Импусли можеш да генерираш и с платки като ардуино или мсп430 лаунчпад.

Автор:  miro_atc [ Пет Яну 08, 2016 6:43 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

NikB написа:
Но при инициализация на USB-UART на скорост под 184 б/с WinAPI не се оплаква


Няма да се оплачи, щото не съм видял нито един USB стек да проверява какво му даваш... По стандарт баудрейта се подава като първите 4 байта в SET_LINE_CODING request-а. Демек всяка 32-битова стойност е ОК. Дори устройството да не я харесва няма голям избор освен просто да я игнорира. Последното може да го провериш като get-неш и видиш каква е стойността. Бозата обаче има проблем когато някое устройство докладва нереално високи баудрейтове или други стойности - имах такова бъгче. Бях забравил да си инициализирам променливите и бозата като прочете някоя странна стойност и се отвяваше ;-)

Това обаче не важи за устройства с FTDI... Те НЕ са стандартни и нямам идея как се държат.

Автор:  ДедоБоре [ Пет Яну 08, 2016 6:47 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

NikB написа:
Явно, не мога да намеря кое да прочета - в последните години не ми се е налагало да чета описанията на чиповете, има си Win API за всичко :).
Но тоя път не става :).

това често важи и за писачите на API-та. налага се една тенденция в мисленето на мекуеристите, че няма нужда да знаят какво е бит в няко регистър.

ако серийната порта е на USB- виж документа за чипа, макар че няма гаранция дали драйвер, апи-то или десетките wrap-ери по етажите няма да омажат нещо.

Автор:  stefan63 [ Пет Яну 08, 2016 6:59 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

Имаш си таймери, имаш функции за управление на модемните сигнали, защо се занимаваш с баудрейта?

Автор:  ike [ Пет Яну 08, 2016 7:06 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

Ама нямаш, точност. На буфера можеш да му зададеш 1МБ данни и ще ги изпрати. А като мандаш ръчно сигналите, ако се случи на тасксуич ето ти забавяне от 15мс, ако се случи пейджинг ето ти 1000мс - тоест генерираш някакви сигнали, но не се знае какви точно.

Автор:  stefan63 [ Пет Яну 08, 2016 7:18 pm ]
Заглавие:  Re: Коя е минималната скорост на SerialPort на PC?

Не съм си играл под Вин , та няма да твърдя, че бъркаш.
Все пак имам някои съмнения-
-ако е на УСБ, трябва да се гарантира, че драйверът поддържа правилния режим на работа.
- виждал съм на Сименс драйвер за XP, за Модбъс - РТУ, би трябвало да отчита времена от сорта на под 1 милисекунда. Тоест някъде надълбоко има и по-прецизни таймери, необременени от таскинга и пейджинга.

Страница 1 от 3 Часовете са според зоната UTC + 1 час [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/