- Лоботрясы

Поиск
Перейти к контенту

Главное меню:

Статьи по AVR

Читать в Яндекс.Подписках



    COM-терминал
Просмотров: 2654

    В один замечательный день меня коснулась страшная трагедия - отправился в мир сгоревших транзисторов мой старый и верный товарищ, служивший мне верой и правдой на протяжении 9-ти лет; перестало биться его 2-х гигагерцевое сердце... Моя радость была неописуемой, ведь помимо отсутствия возможности добраться к нужной информации, находящейся на старых винчестерах, пропала возможность проводить отладку микроконтроллерных поделок с помощью вывода контрольных сообщений через COM-порт на терминальную программу. Уже хотел было сделать (или купить) преобразователь интерфейсов RS232-USB для ноутбука, как пришла идея собрать автономный COM-терминал устройство, позволяющее принимать и с помощью клавиатуры передавать символы в ASCII-кодировке, с отображением всей этой информации на жидкокристаллическом индикаторе. Результат поиска уже разработанных подобных устройств меня не порадовал попалась только одна разработка, на которую у меня не было необходимого дисплея (да и искать его не особо-то хотелось) а автор предлагал только файл-прошивку. Ну что же, мы не ищем лёгких путей - решено разработать такой приборчик самому.
    Дальше, злой рок наконец перестал вмешиваться в мою работу, поэтому через пару недель свободного времени COM-терминал был готов!
    Собственно, устройство:

    Основа устройства контроллер Atmega8A. В качестве дисплея был выбран LPH8731-3C, благо, в своё время поддался приступу жадности, и обзавёлся достаточным количеством телефонов Siemens. Однако, в данном проекте, библиотека была полностью переделана и оптимизирована для быстрого вывода текстовой информации.
    Информацию об интерфейсе клавиатуры PS/2 можно найти на данном сайте, в моей же программе был применён код, основанный на аппноуте AVR313 фирмы Atmel (прилагается в архиве).
    Терминал поддерживает следующие скорости работы UART: 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 и 76800 бод/с.
    В программе используются 3 кольцевых буфера: один на приём данных по UART, второй
на отправку сообщений и третий буфер данных клавиатуры. В принципе, при небольшой скорости печатания на клавиатуре можно было обойтись и без последних двух, но мне работать с ними удобнее.
    В начале каждого запуска терминала появится окошко, в котором кнопкой SELECT необходимо выбрать требуемую скорость работы, а кнопкой ENTER установить её. При необходимости изменить скорость работы UART, нажимаем SELECT и выполняем опять описанные действия. Кнопка CLEAR производит очистку дисплея.
    В схеме, помимо стандартного интерфейса RS-232, предусмотрена возможность подключиться напрямую к выводам TX и RX испытуемого микроконтроллера, блока GPS или другого устройства, имеющего интерфейс UART и необходимую нам скорость работы. Также предусмотрена гальваническая опторазвязка выводов TX и RX терминала, выполненная на оптопарах PC817. В этом случае для связи с испытываемым устройством нам понадобится на 1 соединительный провод больше, чтобы подать от него независимое питание (+3…+5В) на вывод Vcc разъёма X2. Насколько такое решение удачно
судить вам!
    Принимаемые по UART символы отображаются на экране синим цветом, передаваемые с помощью клавиатуры
красным цветом. На дисплее организован сдвиг текстовых данных подобно тому, как он организован в Microsoft Word, что позволяет удобно отслеживать диагностическую информацию.
    Плата создавалась по принципу «что есть в наличии», поэтому представляет собой симбиоз SMD-компонентов с «нормальными» деталями.
Все необходимые коммуникационные выводы представлены на плате в виде разъёмов, а сами гнёзда под интерфейсы RS-232 и PS/2 расположены в корпусе прибора. В качестве источника питания используется 9-вольтовая батарейка типа "Крона".
    Разъём для программирования микроконтроллера на плате не предусмотрен, из-за чего придётся самостоятельно подпаять проводники программатора к нужным выводам, для этого предусмотрены небольшие контактные площадки возле ножек микроконтроллера.
    Конфигурация:

    Печатная плата в Proteus (v 7.10):

    И в железе:

 
 
Назад к содержимому | Назад к главному меню