Цитата(The Fresh @ Dec 30 2006, 10:53)

2 _3m
Сделал вроде все правильно поставил прескалер 6 (4096) основной делитель 9. В реестр сделал запись ExtBaudrate ----10472,2147486729(т.е. 0x8000 0C09)-расчитал на 10400. Но скорость не схватывается в программе, пытается забить 10472 а при чтении настроек тутже выдает 9600.
Может версия дров нужна определенная или еще какие нюансы?Да кстати данная скорость где нибудь визуально отображается?
0x8000 0c09 действительно не работает.
работающий делитель для 10400 - 0x8000 0890 , т.е в реестр записывается "10400,2147485840".
Я поэкспериментировал с разными делителсями, при прескалере 6 (4096) основной делитель не должен быть меньше 16 (0x10), если меньше - на выходе получается полный бред (видимо у PLL и делителей вообще крышу сносит). Кроме того, чем меньше величина основного делителя, тем больше джиттер на выходе UART.
Думаю, что стоит начинать с минимальных значений прескалера чтобы основной делитель был как можно больше.
Все это надо контролировать осциллографом, так как расчет - это математическая абстракция, а чип работает как-то хитро и точных данных о делителях PL2303 нигде нет.
После изменения в реестре обязательно нужно передернуть usb шнурок с pl2303 иначе изменения не вступят в силу.
Дополнительные скорости нигде не отображаются, но если скорость установилась, она возвращаются в структуре DCB возвращаемой при вызове GetCommState.
Значение скорости в ExtBaudrate должно точно совпадать со скоростью, которую устанавливает программа, например если в реестре определена дополнительная скорость 10400, а программа пытается установить 10472, то работать не будет - драйвер pl2303 "не увидит" 10472 и подставит вместо этого ближайшую стандартную - 9600.
У меня драйвер PL2303 версии 2.0.2.1 от 25.07.2005, ОС - XP sp2 eng.
Сообщение отредактировал _3m - Dec 30 2006, 14:09