<img src="//counter.rambler.ru/top100.cnt?1859758" alt="" width="1" height="1" border="0"/>
Суббота, 23.11.2024, 12:56
Вы вошли как Гость | Группа "Гости"
Главное меню
Мини-чат
Календарь

«  Ноябрь 2024  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930
Внимание))))

Реклама
Статистика

Рейтинг@Mail.ru
WOlist.ru - каталог качественных сайтов Рунета Рейтинг Сайтов YandeG
Rambler's Top100 Союз образовательных сайтов


Онлайн всего: 1
Гостей: 1
Пользователей: 0

Преобразователь USB-COM-LPT

В статье приводится описание простого преобразователя, позволяющего соединять периферийные устройства, оснащенные интерфейсом LPT, с компьютером, имеющим только интерфейс USB. Преобразование ведется в два этапа - специализированная микросхема преобразует USB в COM (RS-232), а затем микроконтроллер преобразует СОМ в LPT. Поскольку компьютер в данном случае ведет обмен информацией через виртуальный СОМ-порт, взаимодействовать через предлагаемый преобразователь с внешним LPT-устройством смогут только программы, разработанные или переделанные с учетом этой особенности. Для всех остальных потребуется подключить к операционной системе специальный программный драйвер, который только предстоит разработать.

  В свое время было разработано и изготовлено множество электронных приборов и устройств, подключаемых к порту LPT персонального компьютера. Они существуют и сегодня. В то же время порты LPT (как, впрочем, и порты СОМ) в компьютерах постепенно вытесняет интерфейс USB. Особенно быстро идет этот процесс в переносных компьютерах (notebook). Но благодаря компактности и автономности именно такие компьютеры очень удобно использовать в качестве переносных инструментов для настройки различной электронной аппаратуры, в том числе с интерфейсом LPT. Ликвидация портов LPT в компьютерах делает работу с такой аппаратурой проблематичной.


  Для разрешения этой проблемы предлагается преобразователь, использующий недорогие и доступные электронные компоненты и имеющий открытую архитектуру для разработки собственных программ. Наличие в нем микроконтроллера позволяет при необходимости разработать любой необходимый протокол обмена информацией между компьютером и подключенным через преобразователь устройством.

 На рисунке изображена схема преобразователя. Информация, передаваемая через разъем Х1 по интерфейсу USB, преобразуется с помощью микросхемы CP2103-GM [1] в формат последовательного интерфейса RS-232. Она же выполняет обратное преобразование. Выводы управляющих линий интерфейса RS-232 этой микросхемы соединены перемычками, соответствующими постоянной готовности к обмену информацией. Выводы TXD и RXD соединены соответственно с информационными входом и выходом встроенного UART микроконтроллера ATmega8515-8AC [2]. Разъем Х2 предназначен для внутрисхемного программирования микроконтроллера.


  Работая по программе, загрузочные коды которой приведены в таблице, микроконтроллер обрабатывает поступающие на вход встроенного UART команды компьютера. Выполняя их, он формирует на своих выводах и подключенных к ним контактам разъема ХЗ выходные сигналы порта LPT и принимает входные сигналы этого порта. Программа написана на языке С в среде разработки CodeVision.

  Согласно разработанному автором и заложенному в программу микроконтроллера протоколу обмена информацией, компьютер должен посылать в преобразователь двух- или трехбайтные команды. Младший разряд первого байта команды задает направление передачи информации: О - из компьютера в преобразователь (запись); 1 - в обратном направлении (чтение). Следующий разряд определяет адресное пространство: 0 - регистр порта LPT; 1 - энергонезависимая память данных микроконтроллера. Шесть старших разрядов первого байта пока не используются. Второй байт команды содержит адрес регистра или ячейки памяти, который может лежать в интервале 0-255. Третий байт присутствует только в командах записи и содержит код, предназначенный для занесения в регистр или ячейку памяти. В ответ на двухбайтную команду чтения преобразователь передает в компьютер один байт - содержимое запрашиваемого регистра или ячейки памяти. Инициатором пересылки информации в любом направлении всегда является компьютер.


  Возможность читать из EEPROM микроконтроллера и записывать в него информацию хотя и не требуется для рассматриваемого применения, но пригодится для развития и совершенствования выполняемых преобразователем функций. Например, чтобы записать в EEPROM микроконтроллера по адресу 0x01 байт 0x5F, компьютер должен послать через виртуальный СОМ-порт последовательность из трех байтов: 0x03, 0x01, 0x5F. А для чтения данных по тому же адресу достаточно команды из двух байтов: 0x02, 0x01. В ответ на нее преобразователь передаст байт, прочитанный из указанной ячейки EEPROM.

  Как известно, с точки зрения программиста, порт LPT в обычном (не ЕРР или ЕСР) режиме работы состоит из трех регистров: данных (DR), состояния (SR) и управления (CR). Адрес регистра DR совпадает с базовым адресом порта, адреса регистров SR и CR больше соответственно на одну и две единицы. Такая структура порта LPT реализована и в предлагаемом устройстве. Полностью сохранено и назначение разрядов всех регистров. Это позволяет с минимальными затратами перерабатывать созданные ранее компьютерные программы для работы с описываемым преобразователем.

  Программа включает в себя заголовочные файлы с описанием имен регистров микроконтроллера и записей двоичных значений чисел, применяемых для инициализации переменных и других операций.

  UART микроконтроллера программа настраивает на работу в асинхронном режиме со скоростью 115200 Бод при восьми информационных (без контроля четности) и одном стоповом разряде. Аналогичным образом должен быть настроен виртуальный порт СОМ компьютера. Имеются подпрограммы приема (UART_RXD) и передачи байта (UART_TXD) через UART, а также подпрограммы для записи (WRLPT) и чтения RD_LPT регистров порта LPT и ячеек энергонезависимой памяти (WR_EEPROM и RD_EEPROM). 

  Для максимальной совместимости с LPT предусмотрены маски регистров MaskSR и MaskCR. При выводе информации на линии портов микроконтроллера, соединенные с разъемом ХЗ, или ее вводе с этих линий выполняется автоматическая инверсия определенных разрядов регистров SR и CR с помощью упомянутых масок и логической операции XOR (исключительное ИЛИ).

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


  Для обеспечения работы с преобразователем необходимо установить в компьютере программный драйвер виртуального СОМ-порта, обеспечивающий обмен информацией с микросхемой СР2103. 

Этот драйвер свободно доступен на сайте производителя этих микросхем по адресу 

http://www.silabs.com.

  Для проверки преобразователя можно использовать самые разнообразные тестовые и отладочные программы, позволяющие работать с СОМ-портом, если в них нет прямых обращений к регистрам этого порта, как это обычно делалось в DOS и Windows9X/Me. Такие обращения необходимо заменить функциями работы с портом (например, CreateFile, Get-CommConfig, SetCommConfig, Read-Corn, WriteFile), предоставляемыми операционной системой.

  После включения преобразователя светится светодиод HL3. Прием первого байта команды погасит его. После получения команды полностью и ее исполнения светодиод будет вновь включен, что означает готовность к приему следующей команды. Такой алгоритм удобен для контроля прохождения команд и нормальной работы преобразователя.

  На случай "зависания" микроконтроллера в программе задействован сторожевой таймер, который перезапустит микроконтроллер при возникновении такой ситуации. Это повышает устойчивость работы преобразователя даже при работе в условиях сильных помех.

  Полный комплект файлов проекта программы микроконтроллера можно скачать тут


Мини-Профиль
Суббота
23.11.2024
12:56


Новости сайта -RSS
Наш опрос
Оцените наш сайт
Всего ответов: 1360
Поиск

Друзья сайта
Новости техники



За материалы, размещённые пользователями на сайте Паятель администрация ответственности не несёт!