Интерфейс RS-232 (COM-порт)
Общее описание
Интерфейс RS-232, совсем официально называемый "EIA/TIA–232–E", но
более известный как интерфейс "COM-порта", ранее был одним из самых
распространенных интерфейсов в компьютерной технике. Он до сих пор
встречается в настольных компьютерах, несмотря на появление более
скоростных и "интеллектуальных" интерфейсов, таких как USB и FireWare.
К его достоинствам с точки зрения радиолюбителей можно отнести
невысокую минимальную скорость и простоту реализации протокола в
самодельном устройстве.
Физический интерфейс реализуется с помощью разъёма DB-9M.
Назначение выводов 9-контактного разъема
9-контактная вилка типа DB-9M
Нумерация контактов со стороны штырьков
Направление сигналов указано относительно хоста (компьютера) Контакт | Сигнал | Направление | Описание | 1 | CD | Вход | Обнаружена несущая | 2 | RxD | Вход | Принимаемые данные | 3 | TxD | Выход | Передаваемые данные | 4 | DTR | Выход | Хост готов | 5 | GND | - |
Общий провод | 6 | DSR | Вход | Устройство готово | 7 | RTS | Выход | Хост готов к передаче | 8 | CTS | Вход | Устройство готово к приему | 9 | RI | Вход | Обнаружен вызов |
И так, теперь вернёмся к нашим птичкам. Как вы уже поняли для
соединения ПК и робо-контроллера мы будем использовать COM-порт. Есть
Конечно ещё один вариант это соединение через USB, но о нём поговори в
другой статье. Частенько бывает так, что нам требуется подключить робо-контроллер к
компьютеру с целью отладки программы, считывание данных с подключённых
к контроллеру датчиков, управление и контроль по средствам компьютера.
COM-порт он же протокол RS-232 является самым
распространённым и не дорогим интерфейсом для связи контроллера с ПК.
Для любительских проектов это самое оно. Скорости во всяком случаи
достаточно, сборка простая да и цена тоже не высокая. Для согласования TTL уровней применена микросхема MAX232CPE. Ах да чуть не забыл сказать. Дополнительно разведено место под внешний I2C EEPROM серии
24LCxxx (32, 64, 265, 512). Конфигурационные ножки микросхемы EEPROM
(A0-A2) заведены на массу и соответственно она имеет фиксированный
адрес на шине I2C + 2 разъёма для подключения по шине I2C (TWI) с питанием. Чтобы протестировать I2C на данной плате я взял программу для теста с официального сайта. Скачать её с внесёнными изменениями под наш контроллер можно в конце статьи. Тестовая прошивка работает совместно с интерфейсом UART. Он используется для вывода данных в терминал компилятора.
В этой статье будет описан самый простой информационный обмен информацией через COM-порт с помощью компилятора BASCOM AVR.
Ну о теперь о программной части. Распишу только те
команды, которые будут применяться в нашей программе. Все остальные
команды можно посмотреть на официальном сайте Bascom AVR.
$BAUD - глобальная установка скорости информационного обмена UART
INPUT - ввод данных различных форматов.
PPINT - отправить данные в порт RS-232.
Команда $BAUD
Синтаксис команды - $BAUD = var
Var – скорость порта, которую вы хотите использовать для информационного обмена (числовое значение)
Примечание:
Скорость обмена, установленная в программе микроконтроллера, должна совпадать с настройками COM-порта компьютера. В противном случае устойчивого соединения не будет.
$regfile = "m16def.dat" ' используем ATmega16
$crystal = 16000000 ' частота установленного кварца 16 mHz
$baud = 19200 ' скорость порта 19200 бит/с.
Команда INPUT
Синтаксис команды - INPUT [" prompt" ] , var[ , varn ]
INPUT #ch, var[ , varn ]
Promt – текстовая информация (опционально)
Var,varn – вводимые значения
Сh – номер канала (в многоканальном режиме) в который осуществляется ввод информации
Input "Vvedite chislo " , A ' ввод переменной с текстовым сообщением
Input A1 'ввод переменной
Команда PRINT
Синтаксис команды - PRINT [#channel , ] var ; " constant"
Channel – выбор канала для вывода информации в многоканальном режиме
Var – переменные, константы различных форматов, для вывода
”constant” – вывод какой либо текстовой информации
Print "выводим переменную А " ; A ' вывод текста и переменной
Print 'вывод пустой строки
Print "Выводим текст” 'вывод текстовой информации
Ну чтож. Этих команд для простого обмена будет вполне достаточно.
Ниже будет приведено два кода. В-первом просто вывод текста в терминал
компилятора, во-втором чуть сложней. Будет организован вывод
информации, которую вы вводите с клавиатуры. Вообщем два кода. Ну и в
принципе на этом всё. Ниже после таблицы с кодами будет архив. В нём
находятся: принципиальная схема в формате sPlan 5.0, разводка платы в
формате layout 5.0, 2 кода программ с прошивкой + два коротеньких урока
по работе с терминалом. А и если после того как прошили программу на
терминали ни чего не появилось нажмите кнопку Reset, которая находится
на робо-контроллере.
$regfile = "m16def.dat" ' используем ATmega16
$crystal = 16000000 ' частота установленного кварца 16 mHz
$baud = 19200 ' скорость порта 19200 бит/с.
Print "RoboHome" ' выводим надпись
Wait 1 : Print ' ждём секунду и пропускаем строку
Print "Test uart good!" ' выводим надпись
End ' конец программы
| $regfile = "m16def.dat" ' используем ATmega16
$crystal = 16000000 ' частота установленного кварца 16 mHz
$baud = 19200 ' скорость порта 19200 бит/с.
Dim A As String * 10 'объявляем переменную – строка не более 10 символов
Do Print "Hello! I am Robot." ' вывод сообщения
Input "What is you name?" , A 'ввод текста с клавиатуры
Print "Good! " ; A ' вывод сообщения вместе с ранее введенным текстом
Wait 1 ' задержка 1 секунда Loop
End
|
Архив - 1, 63 мб
Test I2C - 10, 3 кб
|