USB -> "X" port, или помогите начинающему...

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Встал на лапы
Сообщения: 128
Зарегистрирован: Пн дек 01, 2008 00:32:18
Откуда: CCCP

Сообщение tytar »

Доброе время суток! Заранее прошу не бить сильно!!!
Нужно собрать хитрый девайс...
Суть в следующим:
Подключаеться к USB и иметет три порта, чтото похожое на LPT...
Порт DATA(out/in)-8pin'ов
Порт Control(out only)-4(6)pin'ов
Порт Status(in only)-5(6)pin'ов
+ еще один пин как бы "аварийтый" при подачи на него сигнала работа контроллера останавливаеться и в ПК передаеться "код ошибки" или сигнал...
Программа+драйвер своя... Нужна помощ и наставления в деле програмирования МК
Вот откопал http://www-user.tu-chemnitz.de/~heha/ba ... -15.htm.en
Думаю использовать как на том сайте Atmega8 /48
Может как-то их исходники переделать, я то я в програмировании МК не очень селён... Тем более там на си, а я только на асме учусь...

По программе: программа будет передовать данные через USB в МК, а МК в порты...
Прошу помощи... :)
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

На сайте http://www.recursion.jp/avrcdc/ есть проект CDC-IO, на меге8/48 можно создать устройство ввода-вывода с 18-ю двунаправленными каналами. Можно и более многовыводную мегу выбрать. Со стороны ПК устройство видется как СОМ порт. Драйвера есть для винды и висты (собственно, драйвера стандартные, нужен только inf-файл). Посмотрите, может подойдет...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Реклама
Встал на лапы
Сообщения: 128
Зарегистрирован: Пн дек 01, 2008 00:32:18
Откуда: CCCP

Сообщение tytar »

Goodefine писал(а):На сайте http://www.recursion.jp/avrcdc/ есть проект CDC-IO, на меге8/48 можно создать устройство ввода-вывода с 18-ю двунаправленными каналами. Можно и более многовыводную мегу выбрать. Со стороны ПК устройство видется как СОМ порт. Драйвера есть для винды и висты (собственно, драйвера стандартные, нужен только inf-файл). Посмотрите, может подойдет...
БОООльшое спасибо!!! Очень полезная вещь, Вот только но, у него все порты по 6 пинов, а мне на одном нужно 8??? Как тут быть???
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Если слегка переделать исходник, можно позаимствовать два пина из другого порта. Вообще, правильно было бы для вашего случае адаптировать исходник полностью. Изменения коснутся только main.с
В принципе, возможно и переделывать не придется - если обойтись только соответствующим формированием команд/данных на стороне ПК...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 128
Зарегистрирован: Пн дек 01, 2008 00:32:18
Откуда: CCCP

Сообщение tytar »

http://www-user.tu-chemnitz.de/~heha/ba ... -15.htm.en

А что можете сказать по поводу этой штуке???
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

На самом деле те же яйца, только вид сбоку. Оба устройства базируются на USB-драйвере от obdev. Для работы с USB-LPT есть специально заточенный драйвер для винды, посмотрите как он работает с пинами, может и подойдет...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Реклама
Встал на лапы
Сообщения: 128
Зарегистрирован: Пн дек 01, 2008 00:32:18
Откуда: CCCP

Сообщение tytar »

Goodefine писал(а):На самом деле те же яйца, только вид сбоку. Оба устройства базируются на USB-драйвере от obdev. Для работы с USB-LPT есть специально заточенный драйвер для винды, посмотрите как он работает с пинами, может и подойдет...
Не совсем понял о чем вы говорите? о моей или вашей ссылке?
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Об этой
Драйвер для МК такой же как и здесь
Сайт разработчика драйвера
Вроде понятно написал...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Встал на лапы
Сообщения: 128
Зарегистрирован: Пн дек 01, 2008 00:32:18
Откуда: CCCP

Сообщение tytar »

Скажите, если я буду использовать мк в другом корпусе, тогда значение имеет номер "лапки" или номер порта? Мне кажеться порта...
Смотрл 2 схемы в них разные номиналы, можно ли как то сделать общее, к примеру по схеме : на одной 200 Ом на друго 68Ом на Data+ Data- почему разные номиналы??? Связано ли это с прошивкой??? или со схемой питания??? на одной схеме стоит LD1117 на другой диоды? ПОчему так? хочу истользовать ATMEGA8 в DIP28? а схема разработана под TQFP - корпус, могу ли я взять номиналы деталей со схемы этой http://www.recursion.jp/avrcdc/ и влепить в эту http://www-user.tu-chemnitz.de/~heha/ba ... /ul-16.gif ??? Будет ли работать???
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

tytar писал(а):...если я буду использовать мк в другом корпусе, тогда значение имеет номер "лапки" или номер порта? Мне кажеться порта...
Должно быть соответствие с буквой порта и номером пина...
tytar писал(а):... 2 схемы в них разные номиналы, можно ли как то сделать общее, к примеру по схеме : на одной 200 Ом на друго 68Ом на Data+ Data- почему разные номиналы??? Связано ли это с прошивкой??? или со схемой питания???
Это личные пристрастия авторов, прошивка тут не причем. За 220 Ом не знаю, но с 68-ю Омами работает...
tytar писал(а):...на одной схеме стоит LD1117 на другой диоды? ПОчему так?
Потому что конечный результат одинаков (получить 3.3В на сигнальных линиях USB) - кому что больше нравится. Кто-то стабилитроны на сигнальные линии ставит...
tytar писал(а):... хочу истользовать ATMEGA8 в DIP28?
Используйте на здоровье...
tytar писал(а):...могу ли я взять номиналы деталей со схемы этой http://www.recursion.jp/avrcdc/ и влепить в эту http://www-user.tu-chemnitz.de/~heha/ba ... /ul-16.gif ??? Будет ли работать???
Номиналы да, только обратите внимание, что сигнальные линии USB в этих проектах подключаются к разным пинам...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Встал на лапы
Сообщения: 128
Зарегистрирован: Пн дек 01, 2008 00:32:18
Откуда: CCCP

Сообщение tytar »

Goodefine писал(а):
tytar писал(а):...если я буду использовать мк в другом корпусе, тогда значение имеет номер "лапки" или номер порта? Мне кажеться порта...
Должно быть соответствие с буквой порта и номером пина...
tytar писал(а):... 2 схемы в них разные номиналы, можно ли как то сделать общее, к примеру по схеме : на одной 200 Ом на друго 68Ом на Data+ Data- почему разные номиналы??? Связано ли это с прошивкой??? или со схемой питания???
Это личные пристрастия авторов, прошивка тут не причем. За 220 Ом не знаю, но с 68-ю Омами работает...
tytar писал(а):...на одной схеме стоит LD1117 на другой диоды? ПОчему так?
Потому что конечный результат одинаков (получить 3.3В на сигнальных линиях USB) - кому что больше нравится. Кто-то стабилитроны на сигнальные линии ставит...
tytar писал(а):... хочу истользовать ATMEGA8 в DIP28?
Используйте на здоровье...
tytar писал(а):...могу ли я взять номиналы деталей со схемы этой http://www.recursion.jp/avrcdc/ и влепить в эту http://www-user.tu-chemnitz.de/~heha/ba ... /ul-16.gif ??? Будет ли работать???
Номиналы да, только обратите внимание, что сигнальные линии USB в этих проектах подключаются к разным пинам...
Во-первых, хочу выразить особую благодарность, ибо Вы, единственный, у кого есть желание и время на советы и помощ

Еще такой вопрос: собрался собирать сабж на основе этого http://www-user.tu-chemnitz.de/~heha/ba ... -15.htm.en
ибо в нём есть и драйвер и прошивка, так вот если собрать эту "фигню" смогу ли я обращаться на прямую к портам "типа" 378h 379h 37A???
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Как обращаться к виртуальному LPT зависит от драйвера для винды. Нужно читать на него хелп. Драйвер под Винду штатный (работа как с COM-портом) и прошивка с исходниками есть и в CDC-IO. Более того, там рабочий проект для связки AVR Studio 4 + WinAvr20080610. Сдается мне его легче поднять...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

смогу ли я обращаться на прямую к портам "типа" 378h 379h 37A
У виртуальный портов не физических адресов, поэтому это не реально!
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Это целиком и полностью определяется дровами между пользовательским ПО и виртуальным портом. Что мешает драйверу преобразовать адрес в номер соответствующего пина МК?
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Встал на лапы
Сообщения: 128
Зарегистрирован: Пн дек 01, 2008 00:32:18
Откуда: CCCP

Сообщение tytar »

Goodefine писал(а):(работа как с COM-портом)
Не могли бы ткнуть носом, а то везде написано "...то работа с портами очень проста, то же что и с файлами..." а что-то конкретно ничего!...
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Если вы про виртуальный LPT, то не ткну, ибо не копал. Что касается COM, в сети полно инфы. Со стороны МК нужно анализировать пришедшие байты и выдывать соответствующие управляющие последовательности. Если не хотите изменять исходник, посмотрите CDC-IO внимательно, там в readme есть краткий хелп:
CDC-IO command
function command format response
------------------------------------------------------------------
Who @ @ "cdc-io", CR-LF
Get ? addr ? data, CR-LF
Set = data addr = CR-LF
AND & Set & data addr & CR-LF
OR & Set | data addr | CR-LF
EX-OR & Set ^ data addr ^ CR-LF
Set Double $ data2 data1 addr $ CR-LF

addr: memory mapped I/O address in hex
data: 8 bit data in hex
delimiter: Tab, Space, CR, LF

predefined addr: (case-insensitive)
PINA, DDRA, PORTA
PINB, DDRB, PORTB
PINC, DDRC, PORTC
PIND, DDRD, PORTD

example:
DDRB ? (+delimiter) Replies DDRB value with CR-LF.
12 34 = (+delimiter) Write 0x12 to address:0x34, replies CR-LF.
FB PORTC & (+delimiter) Write (PORTC & 0xFB) to PORTC, replies CR-LF.
IO я не использовал, поэтому более конкретно не скажу. Я модифицировал AVR-CDC. К слову сказать, большой разницы нет...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Встал на лапы
Сообщения: 128
Зарегистрирован: Пн дек 01, 2008 00:32:18
Откуда: CCCP

Сообщение tytar »

Goodefine писал(а): модифицировал AVR-CDC...
А можно по-подробнее???
З.Ы. "Не ругайте", я только учусь! :)
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

О портах здесь написанно http://www.pcports.ru/Articles.php
Это целиком и полностью определяется дровами между пользовательским ПО и виртуальным портом. Что мешает драйверу преобразовать адрес в номер соответствующего пина МК?
Даже самый крутой драйвер не может создать аппаратный регистр в области ввода/вывода процессора.
Драйвер это программа, а аппаратный регистр это железо.
Комп видит виртуальный порт как программу. К нему проще всего обращатся через API как к обычному порту.
Об этом здесь почитать можно http://www.pcports.ru/articles/lpt11.php
работа с портами очень проста, то же что и с файлами..." а что-то конкретно ничего!
Это работа через API.
Наиболее простой и универсальный способ общения с виртуальным портом.
Это касается COM порта.
С LPT всё немного сложнее - через API сложно управлять отдельными выводами, поскольку такой режим предназначен для принтера, а не для "дёргания лапками".

Для реального LPT порта (железного, имеющего аппаратные регистры) предпочтительнее использовать прямой доступ к портам (через драйвер разумеется, чтобы Винда не ругалась).
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

PB_EXPERT писал(а):...Даже самый крутой драйвер не может создать аппаратный регистр в области ввода/вывода процессора.
Драйвер это программа, а аппаратный регистр это железо.
Комп видит виртуальный порт как программу. К нему проще всего обращатся через API как к обычному порту.
Эксперт, объясните мне, пожалуйста, простую вещь. На пальцах...
Вот есть у нас устройство, которое обменивается по интерфейсу USB c помощью custom-class или hid-custom-rq или hid-data или... не важно. Нестандартный HID, в общем.
На стороне ПК необходим драйвер, посредством которого будет осуществляться передача и прием данных между устройством и программой пользователя на ПК.
Что нам мешает, в принципе, таким образом написать драйвер, чтобы реализовать передачу команд или чтение данных из порта в формате set(adress), reset(adress), get(adress)? adress-ом будет поставленный в соответствие РАЗРАБОТЧИКОМ один пин (или группа пинов) совпадающий (ие) по цоколевке на LPT разъеме со стандартным по физическому положению и адресу. Программа в МК, приняв некие данные (здесь разработчик сам рисует протокол передачи) по идентификатору команды понимает суть необходимых действий, а по принятому адресу - выбирает соответствующий пин.
Т.е. программа в МК действует с драйвером на ПК в единой связке, обеспечивая для пользователя иллюзию работы с физическим LPT. Драйвер можно научить представляться Винде виртуальным портом. Это не помешает ему принимать данные (команды) с параметром адреса, который он САМ (после обучения разработчиком)ставит в соответствие НАШЕМУ устройству...
Или я чего-то глобально недопонимаю?...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

tytar писал(а): А можно по-подробнее???
В этой теме есть немного..
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Ответить

Вернуться в «Интеграция с ПК»