» » BASCOM AVR – подключаем контроллер к ПК через COM порт (RS-232)
Информация к новости
  • Просмотров: 71031
  • Автор: administrator
  • Дата: 16 июля 2008
  • 0
16 июля 2008

BASCOM AVR – подключаем контроллер к ПК через COM порт (RS-232)

Категория: BASCOM AVR

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

 

Непосредственно на самом протоколе обмена RS-232 заострять внимание не будем, он достаточно подробно описан в статье - Интерфейс RS-232 (COM-порт). Схема подключения довольно проста - для согласования TTL уровней применена микросхема MAX232CPE. Данное решение применено в обоих наших робо-контроллерах – MRC-28 и MRC-40.
 

 

BASCOM AVR – подключаем контроллер к ПК через COM порт (RS-232)
 

 

Перечислим основные команды компилятора BASCOM AVR примененных в нашем примере (используем аппаратный UART микроконтроллера):

 

-         $BAUD – глобальная установка скорости информационного обмена UART.

-         INPUT – ввод данных различных форматов.

-         PRINT – отправить данные в порт RS-232.
 

 

Опишем подробнее использование данных команд:
 

 

Команда $BAUD

Синтаксис команды -  $BAUD = var

                                      

Var – скорость порта, которую вы хотите использовать для информационного обмена (числовое значение)

 

 
Примечание:
Скорость обмена, установленная в программе микроконтроллера, должна совпадать с настройками COM-порта компьютера. В противном случае устойчивого соединения не будет.

 

Пример:

$regfile = "m32def.dat" ' используем ATmega32

$crystal = 16000000 ' частота установленного кварца 16 mHz

$baud = 19200 ' скорость порта 19200 бит/с.
 

 

Команда INPUT

Синтаксис команды - INPUT [" prompt" ] , var[ , varn ]

                                     INPUT #ch, var[ , varn ]

Promt – текстовая информация (опционально)

Var,varn – вводимые значения

Сh – номер канала (в многоканальном режиме) в который осуществляется ввод информации
 

Пример:

Input "Введите значение " , V  ' ввод переменной с текстовым сообщением

Input V1                                      'ввод переменной
 

Команда PRINT

Синтаксис команды - PRINT [#channel , ] var ; " constant"

 

 

Channel – выбор канала для вывода информации в многоканальном режиме

Var – переменные, константы различных форматов, для вывода

constant– вывод какой либо текстовой информации
 
Пример:

Print "выводим переменную А " ; A         ' вывод текста и переменной

Print                                                            'вывод пустой строки                     

Print "Выводим текст”                              'вывод текстовой информации     
 

 

Для простого информационного обмена этих команд будет вполне достаточно.
 

Естественно BASCOM AVR обладает более широкими возможностями в данном плане – организация программного UART на несколько каналов, буферизация и тд и тп. Со всеми командами вы можете ознакомится на официальном сайте компилятора.

Используем вышеперечисленные команды для написания простой программы, которая продемонстрирует простой обмен информацией через COM-порт. Задачей программы будет вывод введенного с клавиатуры текста на терминал.

 

'ввод и вывод информации через COM-порт
'RoboZone.SU

$regfile = "m32def.dat"       ' используем ATmega32

$crystal = 16000000 ' частота установленного кварца 16 mHz

$baud = 19200       ' скорость порта 19200 бит/с.

Dim A As String * 15       'объявляем переменную – строка не более 15 символов

Do

Input "What is your name? " , A       'ввод текста с клавиатуры

Print "Hello! " ; A ' вывод сообщения вместе с ранее введенным текстом

Print               ' вывод пустой строки

Wait 1              ' задержка 1 секунда

Loop

End

 
Собственно вот и все… Очень просто и прекрасно работает =)
 
BASCOM AVR – подключаем контроллер к ПК через COM порт (RS-232)
 

 

Не забываем, что в настройках компьютера, скорость порта должны быть выставлена идентично скорости в программе. В BASCOM AVR есть встроенный терминал COM-порта, его настройки для данного примера должны быть выставлены подобным образом:

 

BASCOM AVR – подключаем контроллер к ПК через COM порт (RS-232)

 

 

Исходник можно скачать ниже. Успехов!
Вы не можете скачивать файлы с нашего сервера

Метки к статье: BASCOM AVR, начинающим, rs232, UART, COM-port

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
<
space

21 июля 2008 16:23

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
Вопрос. А где надпись font в настройках какой шрифт стоит, а то у меня выводятся иероглифы?
<
administrator

22 июля 2008 08:55

Информация к комментарию
  • Группа: Администраторы
  • ICQ: {icq}
  • Регистрация: 26.02.2008
  • Статус: Пользователь offline
  • Публикаций: 65
  • Комментариев: 747
попробуй Arial
<
space

22 июля 2008 11:15

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
пробовал то же самое sad

Если вводить с клавиатуры, то иероглифы, если нажать ресет на мк, то выводится сразу полный тект, но коряво.
http://robotsspace.ucoz.ru/material/1.jpg

Выводы com порта уже проверял. Всё правильно. Если только скорость по меньше попробовать поставить. Может быть такое, что для меги 16 скорость 19200 слишком большая?
<
administrator

22 июля 2008 12:16

Информация к комментарию
  • Группа: Администраторы
  • ICQ: {icq}
  • Регистрация: 26.02.2008
  • Статус: Пользователь offline
  • Публикаций: 65
  • Комментариев: 747
хм...странно
скорость попробуй поменьше, хотя проблем быть не должно на 19200
скомпилируй на 9600 (не забудь в терминале такую же скорость поставить)


кстати а почему у тебя СОМ2? СОМ1 занят?
<
space

22 июля 2008 15:01

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
Com 1 занят. К нему подключён программатор. Я его покупал. Когда ещё только начинал. Тогда не знал, что можно свой сделать. Пришлось ставить дополнительный COM 2.

Всё работает. Проблема была в том, что вчера я поменял кварц на 16мГц, а fuse под работу с таким кварцом прошить забыл. Остались старые, которые работали на 8. Сейчас всё исправил и всё заработало как надо wink
<
portowa

22 сентября 2008 12:06

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
Терь буду чаще заходить :)
<
Acroliman

22 ноября 2008 09:11

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
Очень даже ничего. THX!
<
Rosh

18 декабря 2008 21:57

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
отлично... а есть ли в этой программе режим симулирования... тоесть могили я проверить всё без мк... так чтобы потренироваться да по учиться... или я слишком ногого хочу?))))
<
administrator

18 декабря 2008 22:37

Информация к комментарию
  • Группа: Администраторы
  • ICQ: {icq}
  • Регистрация: 26.02.2008
  • Статус: Пользователь offline
  • Публикаций: 65
  • Комментариев: 747
Rosh, в BASCOMе симулятор есть
<
telefunkin

26 января 2009 03:40

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
Доброго времени суток,
А возможно ли так подправить программу, чтобы текст терминала параллельно отображался на LCD дисплее, подключенного к чипу. То, что контроллер выдает в терминал, я "отобразил"; а как переделать переменную А для отображения?
Назад Вперед
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.