Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: переходник USB-RS232
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
torik
Привет всем.
Занимался этим делом месяца 3 назад, потом опять забросил всвязи с другими срочными работами...

На основе примера программы с сайта microchipC сделал переходник RS232 - USB.
Компилятор - Hitech PICC18.
Компутер определяет его как виртуальный ком-порт, далее работа как с обычным ком-портом.
Этот переходник позволяет организовать связку: ПК - переходник - устройство. В качестве ПК
используется ноутбук, в котором нету обычного КОМ-порта и благодаря переходнику не приходится
дорабатывать ПО для ПК и устройство...

На основе демоплатки от микрочипа (PIC DEMO USB.....), чтоб не паять ничо заново превратил его в почти полноценный переходник. Но в том то и дело что почти:
- нет работы с битом 9;
- нет управляющих сигналов RTS...

Разобрался как получить от компа сигналы RTS, DTR; как получить с компа "настройки" - скорость, 9ый бит...
Но никак не могу разобраться с тем чтобы по третьей интераптовой smile.gif точке передать "notification" (DSR, CTS, BRK....) в компутер, да и девятый бит хрен пойми куда припаять при передаче в сторону компа....

В основном передача этих сигналов к компу не нужна, щас везде используется 485ый интерфейс (там достаточно RTS со стороны компа для выбора прием/передача). Но мне необходимо это очень, т.к. старый прибор, в котором используются все сигналы надо подключать к ноуту.


Так вот smile.gif - откликнитесь кто-нибудь, кто занимался этим вопросом... Я могу выслать архив проекта - поглядите чо я там не так делаю... заодно может и пригодиться прога.
DL36
Цитата(torik @ Jan 18 2007, 11:20) *
Разобрался как получить от компа сигналы RTS, DTR; как получить с компа "настройки" - скорость, 9ый бит...
Но никак не могу разобраться с тем чтобы по третьей интераптовой smile.gif точке передать "notification" (DSR, CTS, BRK....) в компутер, да и девятый бит хрен пойми куда припаять при передаче в сторону компа....

В основном передача этих сигналов к компу не нужна, щас везде используется 485ый интерфейс (там достаточно RTS со стороны компа для выбора прием/передача). Но мне необходимо это очень, т.к. старый прибор, в котором используются все сигналы надо подключать к ноуту.


Так вот smile.gif - откликнитесь кто-нибудь, кто занимался этим вопросом... Я могу выслать архив проекта - поглядите чо я там не так делаю... заодно может и пригодиться прога.


Посмотри здесь http://www.microchip.by/info.php?id=2033 у Микрочипа есть 4 драйвера и только один полноценный.
torik
Ну это же, вобчем-то и быть тот код с которого все начиналось...

Драйвера то тут вроде не причем, для виртуального ком-порта используется стандартный виндовый драйвер...

И все-таки в микрочиповском примере нету передачи нотификейцшена, из спецификации на CDC не могу понять нифига как ПРАВИЛЬНО передать его хосту...
torik
Такс, ладна... (сам с собой что ли я болтаю? никто не хочет вникать в мою проблему smile.gif)))

Что-то уже получается!!!!

Значицца так: передаем по третьей интераптовой точке 10 байт как в доке с usb.org

bmRequestType bNotification wValue wIndex wLength Data
10100001B SERIAL_STATE Zero Interface 2 UART State bitmap
...
Class-Specific Notification Codes
SERIAL_STATE 20h



вот что там написано по поводу Data:

Bits Field Description
D15..D7 RESERVED (future use)
D6 bOverRun Received data has been discarded due to overrun in
the device.
D5 bParity A parity error has occurred.
D4 bFraming A framing error has occurred.
D3 bRingSignal State of ring signal detection of the device.
D2 bBreak State of break detection mechanism of the device.
D1 bTxCarrier State of transmission carrier. This signal
corresponds to V.24 signal 106 and RS-232 signal
DSR.
D0 bRxCarrier State of receiver carrier detection mechanism of
device. This signal corresponds to V.24 signal 109
and RS-232 signal DCD.



И таким образом если в качестве данных передаем 0х0001, 0х0002, 0х0003 то в терминале должны мы
получить включенные сигналы CTS, DSR и CTS+DSR соответсвенно.
Но.... если включаем DSR (0x0002), то все нормуль, а вот чтобы включить CTS - надо какието нелепые
действия выполнить - например, отсоединиться и подсоединиться в терминале к порту...
Тоже самое в обратном направлении - если ставим сигнал RTS c компа, то контроллер этого не видит
(приходит 0), но как только включаем DTR - начинает реагировать и на RTS, т.е. с компа не всегда
приходят эти сигналы...


Может с этим кто встречался?
DL36
Цитата(torik @ Jan 23 2007, 10:22) *
Ну это же, вобчем-то и быть тот код с которого все начиналось...

Драйвера то тут вроде не причем, для виртуального ком-порта используется стандартный виндовый драйвер...

И все-таки в микрочиповском примере нету передачи нотификейцшена, из спецификации на CDC не могу понять нифига как ПРАВИЛЬНО передать его хосту...

Не буду утверждать, но встречал инфу, что для полного виртуального COM драйвера от винды не годятся.
ura01
Цитата(torik @ Jan 23 2007, 21:27) *
Такс, ладна... (сам с собой что ли я болтаю? никто не хочет вникать в мою проблему smile.gif)))

Что-то уже получается!!!!

Значицца так: передаем по третьей интераптовой точке 10 байт как в доке с usb.org

bmRequestType bNotification wValue wIndex wLength Data
10100001B SERIAL_STATE Zero Interface 2 UART State bitmap
...
Class-Specific Notification Codes
SERIAL_STATE 20h



вот что там написано по поводу Data:

Bits Field Description
D15..D7 RESERVED (future use)
D6 bOverRun Received data has been discarded due to overrun in
the device.
D5 bParity A parity error has occurred.
D4 bFraming A framing error has occurred.
D3 bRingSignal State of ring signal detection of the device.
D2 bBreak State of break detection mechanism of the device.
D1 bTxCarrier State of transmission carrier. This signal
corresponds to V.24 signal 106 and RS-232 signal
DSR.
D0 bRxCarrier State of receiver carrier detection mechanism of
device. This signal corresponds to V.24 signal 109
and RS-232 signal DCD.



И таким образом если в качестве данных передаем 0х0001, 0х0002, 0х0003 то в терминале должны мы
получить включенные сигналы CTS, DSR и CTS+DSR соответсвенно.
Но.... если включаем DSR (0x0002), то все нормуль, а вот чтобы включить CTS - надо какието нелепые
действия выполнить - например, отсоединиться и подсоединиться в терминале к порту...
Тоже самое в обратном направлении - если ставим сигнал RTS c компа, то контроллер этого не видит
(приходит 0), но как только включаем DTR - начинает реагировать и на RTS, т.е. с компа не всегда
приходят эти сигналы...


Может с этим кто встречался?

Для нормальной работы таких переходников хорощо идут дрова от дата кабелей для телефонов попробуй
torik
А где их взять эти драйвера?

Я сделал - неподдерживается только сигнал CTS в сторону компа.... и я так понял что вообще класс CDC не поддерживает этот сигнал!
VXDRV
А чем FT232 плохи? По моему и дешевле получается.
torik
да ничем они не плохи - но это лишний корпус, цена которого к тому же добавляется к цене МК.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.