Воскресенье, 22.12.2024, 06:28
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
Важно!!!
Для успешного просмотра
сайта воспользуйтесь
браузером Mozilla Firefox



Мини-Профиль
Гость


Группа:
Гости
Время:06:28

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!

Категории раздела
Контроллеры [3]
Платы предназначенные для управления датчиками, допол. платами и т.д.
Перифирия [10]
стабилизаторы, com-порт, блок питания и т.д.
Датчики [5]
Световые, инфракрасные, звуковые и т.д.
Разное [1]
Статьи, которые не подошли у др. темам.

Поиск

Наш опрос
Ваш компилятор?
Всего ответов: 263

Друзья сайта
roboforum
  • robozone
  • Железный феликс
  • robo.com.ua
  • imobot
  • ASARobotics
  • Grover
  • Электроника
  • Your Device
  • Программирование BASCOM
  • Basic для PIC мк
  • Электроника для всех
  • RassionRobots
  • Newrobots-world

  • Статистика

    Каталог-Молдова - Ranker, Statistics
    RoboRing.Ru
    << | list | ? | >>
    Rambler's Top100
    Рейтинг@Mail.ru
    Рейтинг робо-сайтов


    Помоги сайту
    ЯндексЯндекс. ДеньгиХочу такую же кнопку


    Главная » Статьи » Электроника » Перифирия

    Связь ПК и МК (использование UART) - Часть 1
    Долгое время меня мучил вопрос подключения моих устройств к ПК. Как правило, это были устройства сбора и оцифровки данных, которые хотелось сохранять. Для решения этого вопроса я делал выбор между тремя интерфейсами: LPT, COM или USB

    • Первый не подошел из-за того, что его уже нигде и нет.
    • СОМ порт заинтересовал. Мало таких людей, которые не знают микросхемку MAX232. Да и схем много видел.
    • Интерфейс USB поначалу показался ооочень сложным. Еще бы, меня понесло в самые дебри: я рассматривал пакеты сигналов, сигналы готовности и неготовности, даже разобрался в NRZI кодировке) В дальнейшем, я нашел возможно не самое красивое, но решение данного вопроса. О нем будет написано далее.

    Аппаратная реализация.

    Вариант 1

    Начнем с СОМ порта. Он же интерфейс RS-232 - самый простой способ связать ПК и МК. RS-232 по сути и есть UART (как в микроконтроллерах). Только там 10-12 Вольт вместо нужных нам 5В. Надо согласовать. Для этого как раз и применяется MAX232. В этой микросхеме есть две линии для данных, которые повышают с 5В до 10В и две понижающие линии.
    Для передачи данных в микроконтроллере используется две линии rx (прием) и tx (соответственно, передача). Согласовав уровни, надо подключить приемник контроллера к передатчику порта, а передатчик контроллера к приемнику порта. Примерно так, как это сделано на рисунке.

    На следующем рисунке представлена упрощенная схема МАХ232 (для удобства разводки печатной платы и расширения кругозора):

    При монтаже обратите особое внимание на полярность конденсаторов. В Интернете частенько встречаются схемы такого преобразователя, в которых конденсаторы стоят неправильно. На рисунке приведено правильное подключение конденсаторов (взято из даташита)

    Вариант 2 (Использование USB)

    Идея та же. Используем UART. Только связь пойдет не через MAX232, а через UART-USB мост. Такую функцию выполняют такие микросхемы, как CP2101, CP2102, FT232 (сам предпочитаю CP2102). Подробно приводить схемы включения не буду. Исчерпывающую информацию на этот счет можно найти в даташитах. Все аналогично MAX232: также используются линии rx/tx у контроллера и RXD/TXD у микросхемы. Опять же, на первом этапе, чтобы разобраться, используйте 2 линии.
    С микросхемами CP210x работать сложно (очень трудно припаять без паяльной станции, и статики боятся), но их можно найти уже припаянными в data-кабелях для мобильных телефонов. Причем, схема включения в большинстве случаев, один в один как в даташите.
    Следует заметить, что при установке драйверов для этих микросхем (ищется в инете на сайте производителя) в системе пропишется виртуальный COM порт. Именно его и надо будет указать далее в программах на ПК.

    Программная реализация

    Как я уже говорил, нам потребуется UART. На мой взгляд, проще всего запустить его через CodeWizardAVR.
    Для этого:
    • В CodeVisionAVR создаем новый проект. File->new File type : project
    • Соглашаемся использовать CodeWizardAVR. Далее по вкладкам.
    • Вкладка chip: выбираем контроллер и частоту кварца. Я использовал ATmega8 на 16 МГц.
    • Вкладка USART: включаем Receiver и Transmitter, устанавливаем скорость работы в графе Baud Rate (на первый раз хватит 56000) . Больше ничего менять не надо. На первый раз просто запустить, а там поэкспериментируете =)
    • На вкладке Ports конфигурируете нужные линии.
    • В меню файл выбираете пункт Generate, Save and Exit

    Получился большой текстовый файл, в котором все уже настроено (Не пугайтесь, практически половина всего, что там написано, это комменты). Теперь для вывода информации «из контроллера» будет использоваться UART. То есть, будут работать такие функции как printf(), scanf(), getchar(), putchar() и другие подобные, связанные со стандартным вводом/выводом в С (не путать с С++, cin или cout не пойдут!!!). Причем выводить они будут именно на линию UART. Осталось только найти в программе фрагмент:

    while (1) {
    // place your code here

    }

    и поместить туда свою программку. Например,

    getchar();
    printf(“Hello World!”);

    теперь микроконтроллер будет при приходе символа отправлять компьютеру приветствие.

    Осталось разобраться, как будет «разговаривать» компьютер. Для этого нам потребуется любая терминальная программа. К примеру, в том же CodeVision есть терминал. Его надо настроить на нужный порт и на ту скорость, которую вы запрограммировали. У меня стоят такие настройки:

    При неверной настройке Handshaking будут проблемы с приемом. Поскольку мы пока используем только rx/tx, надо поставить именно так. При задействовании еще и других линий, соответственно, по-другому будет.

    Открываем окно терминала в CV AVR. Нажимаем кнопочку Connect и в поле для текста нажимаем любой символ. В ответ на это будет написано “Hello, World!”

    Также можно использовать такую программу как HyperTerminal (стандартная). В своих проектах я использую библиотеку SerialGate с сайта www.pcports.ru для работы с последовательными портами. Выражаю благодарность создателям этой библиотеки! Кстати, на сайте можно найти примеры использования SerialGate

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

    Удачи! DeepBlack.

    Категория: Перифирия | Добавил: DeepBlack (10.08.2009) | Автор: Дмитрий
    Просмотров: 7036 | Теги: связи с пк, com-порт, rs-232, связь пк и мк | Рейтинг: 4.8/4 |
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]