Доброе время суток! Заранее прошу не бить сильно!!!
Нужно собрать хитрый девайс...
Суть в следующим:
Подключаеться к 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 в МК, а МК в порты...
Прошу помощи...
На сайте http://www.recursion.jp/avrcdc/ есть проект CDC-IO, на меге8/48 можно создать устройство ввода-вывода с 18-ю двунаправленными каналами. Можно и более многовыводную мегу выбрать. Со стороны ПК устройство видется как СОМ порт. Драйвера есть для винды и висты (собственно, драйвера стандартные, нужен только inf-файл). Посмотрите, может подойдет...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Goodefine писал(а):На сайте http://www.recursion.jp/avrcdc/ есть проект CDC-IO, на меге8/48 можно создать устройство ввода-вывода с 18-ю двунаправленными каналами. Можно и более многовыводную мегу выбрать. Со стороны ПК устройство видется как СОМ порт. Драйвера есть для винды и висты (собственно, драйвера стандартные, нужен только inf-файл). Посмотрите, может подойдет...
БОООльшое спасибо!!! Очень полезная вещь, Вот только но, у него все порты по 6 пинов, а мне на одном нужно 8??? Как тут быть???
Если слегка переделать исходник, можно позаимствовать два пина из другого порта. Вообще, правильно было бы для вашего случае адаптировать исходник полностью. Изменения коснутся только main.с
В принципе, возможно и переделывать не придется - если обойтись только соответствующим формированием команд/данных на стороне ПК...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
На самом деле те же яйца, только вид сбоку. Оба устройства базируются на USB-драйвере от obdev. Для работы с USB-LPT есть специально заточенный драйвер для винды, посмотрите как он работает с пинами, может и подойдет...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Goodefine писал(а):На самом деле те же яйца, только вид сбоку. Оба устройства базируются на USB-драйвере от obdev. Для работы с USB-LPT есть специально заточенный драйвер для винды, посмотрите как он работает с пинами, может и подойдет...
Не совсем понял о чем вы говорите? о моей или вашей ссылке?
Скажите, если я буду использовать мк в другом корпусе, тогда значение имеет номер "лапки" или номер порта? Мне кажеться порта...
Смотрл 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 ??? Будет ли работать???
tytar писал(а):...если я буду использовать мк в другом корпусе, тогда значение имеет номер "лапки" или номер порта? Мне кажеться порта...
Должно быть соответствие с буквой порта и номером пина...
tytar писал(а):... 2 схемы в них разные номиналы, можно ли как то сделать общее, к примеру по схеме : на одной 200 Ом на друго 68Ом на Data+ Data- почему разные номиналы??? Связано ли это с прошивкой??? или со схемой питания???
Это личные пристрастия авторов, прошивка тут не причем. За 220 Ом не знаю, но с 68-ю Омами работает...
tytar писал(а):...на одной схеме стоит LD1117 на другой диоды? ПОчему так?
Потому что конечный результат одинаков (получить 3.3В на сигнальных линиях USB) - кому что больше нравится. Кто-то стабилитроны на сигнальные линии ставит...
tytar писал(а):... хочу истользовать ATMEGA8 в DIP28?
tytar писал(а):...если я буду использовать мк в другом корпусе, тогда значение имеет номер "лапки" или номер порта? Мне кажеться порта...
Должно быть соответствие с буквой порта и номером пина...
tytar писал(а):... 2 схемы в них разные номиналы, можно ли как то сделать общее, к примеру по схеме : на одной 200 Ом на друго 68Ом на Data+ Data- почему разные номиналы??? Связано ли это с прошивкой??? или со схемой питания???
Это личные пристрастия авторов, прошивка тут не причем. За 220 Ом не знаю, но с 68-ю Омами работает...
tytar писал(а):...на одной схеме стоит LD1117 на другой диоды? ПОчему так?
Потому что конечный результат одинаков (получить 3.3В на сигнальных линиях USB) - кому что больше нравится. Кто-то стабилитроны на сигнальные линии ставит...
tytar писал(а):... хочу истользовать ATMEGA8 в DIP28?
Номиналы да, только обратите внимание, что сигнальные линии USB в этих проектах подключаются к разным пинам...
Во-первых, хочу выразить особую благодарность, ибо Вы, единственный, у кого есть желание и время на советы и помощ
Еще такой вопрос: собрался собирать сабж на основе этого http://www-user.tu-chemnitz.de/~heha/ba ... -15.htm.en
ибо в нём есть и драйвер и прошивка, так вот если собрать эту "фигню" смогу ли я обращаться на прямую к портам "типа" 378h 379h 37A???
Как обращаться к виртуальному LPT зависит от драйвера для винды. Нужно читать на него хелп. Драйвер под Винду штатный (работа как с COM-портом) и прошивка с исходниками есть и в CDC-IO. Более того, там рабочий проект для связки AVR Studio 4 + WinAvr20080610. Сдается мне его легче поднять...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Это целиком и полностью определяется дровами между пользовательским ПО и виртуальным портом. Что мешает драйверу преобразовать адрес в номер соответствующего пина МК?
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Если вы про виртуальный 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
Это целиком и полностью определяется дровами между пользовательским ПО и виртуальным портом. Что мешает драйверу преобразовать адрес в номер соответствующего пина МК?
Даже самый крутой драйвер не может создать аппаратный регистр в области ввода/вывода процессора.
Драйвер это программа, а аппаратный регистр это железо.
Комп видит виртуальный порт как программу. К нему проще всего обращатся через API как к обычному порту.
Об этом здесь почитать можно http://www.pcports.ru/articles/lpt11.php
работа с портами очень проста, то же что и с файлами..." а что-то конкретно ничего!
Это работа через API.
Наиболее простой и универсальный способ общения с виртуальным портом.
Это касается COM порта.
С LPT всё немного сложнее - через API сложно управлять отдельными выводами, поскольку такой режим предназначен для принтера, а не для "дёргания лапками".
Для реального LPT порта (железного, имеющего аппаратные регистры) предпочтительнее использовать прямой доступ к портам (через драйвер разумеется, чтобы Винда не ругалась).
PB_EXPERT писал(а):...Даже самый крутой драйвер не может создать аппаратный регистр в области ввода/вывода процессора.
Драйвер это программа, а аппаратный регистр это железо.
Комп видит виртуальный порт как программу. К нему проще всего обращатся через API как к обычному порту.
Эксперт, объясните мне, пожалуйста, простую вещь. На пальцах...
Вот есть у нас устройство, которое обменивается по интерфейсу USB c помощью custom-class или hid-custom-rq или hid-data или... не важно. Нестандартный HID, в общем.
На стороне ПК необходим драйвер, посредством которого будет осуществляться передача и прием данных между устройством и программой пользователя на ПК.
Что нам мешает, в принципе, таким образом написать драйвер, чтобы реализовать передачу команд или чтение данных из порта в формате set(adress), reset(adress), get(adress)? adress-ом будет поставленный в соответствие РАЗРАБОТЧИКОМ один пин (или группа пинов) совпадающий (ие) по цоколевке на LPT разъеме со стандартным по физическому положению и адресу. Программа в МК, приняв некие данные (здесь разработчик сам рисует протокол передачи) по идентификатору команды понимает суть необходимых действий, а по принятому адресу - выбирает соответствующий пин.
Т.е. программа в МК действует с драйвером на ПК в единой связке, обеспечивая для пользователя иллюзию работы с физическим LPT. Драйвер можно научить представляться Винде виртуальным портом. Это не помешает ему принимать данные (команды) с параметром адреса, который он САМ (после обучения разработчиком)ставит в соответствие НАШЕМУ устройству...
Или я чего-то глобально недопонимаю?...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...