Главная страница
Навигация по странице:

  • 4.8. ДВУНАПРАВЛЕННЫЙ СИНХРОННЫЙ ИНТЕРФЕЙС

  • Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0 Бит подтверждения- - - - ПриемникРис. 4.23.

  • 4.9. УСТРОЙСТВА ИНДИКАЦИИ

  • 4.10. СВЕТОДИОДНЫЕ ИНДИКАТОРЫ

  • Устройства управления роботами, схемотехника и программирование (М. Предко, 2004). Устройства управления роботами, схемотехника и программирование. Устройствауправления роботамисхемотехника и микроконтроллеров picmicro


    Скачать 6.79 Mb.
    НазваниеУстройствауправления роботамисхемотехника и микроконтроллеров picmicro
    АнкорУстройства управления роботами, схемотехника и программирование (М. Предко, 2004).pdf
    Дата29.08.2017
    Размер6.79 Mb.
    Формат файлаpdf
    Имя файлаУстройства управления роботами, схемотехника и программирование .pdf
    ТипРеферат
    #8441
    КатегорияПромышленность. Энергетика
    страница13 из 33
    1   ...   9   10   11   12   13   14   15   16   ...   33
    Backspace. Эта функция весьма полезна, если вы набираете данные для микроконтроллеру на клавиатуре компьютера. При этом обязательно рано или поздно возникнет необ- ходимость исправить уже введенный внесем последние исправления в наш код, чтобы реализовать по- строчную отправку символов на компьютер. С этой целью мы используем тот факт, что после отправки предыдущего байта, когда освобождается регистр TXREG,
    автоматически устанавливается флаг прерывания от передатчика TXIF. Поэтому для отправки всех остальных символов при обработке каждого прерывания от передничка USART надо проверять, не достигнут ли конец строки, и если нет,
    то записывать в регистр TXREG новый символ для отправки:
    if (TXIF) { // Если регистр передатчика пуст:
    if ( ( temp =
    ) != О ) ,
    TXREG = temp; // Очередной else
    = 1; // Достигнут конец строки.
    }
    Тогда в главной программе для отправки строки достаточно использовать дующие четыре оператора:
    Message =
    // Указатель на отправляемую строку.
    = 0;
    TXREGEmptyFlag = 0; // Передатчик теперь занят.
    TXIF = 1; // Генерируем запрос на прерывание.
    Как только флаг прерывания от передатчика TXIF установлен в 1, происходит переход на процедуру обработки прерывания (если предварительно установлены флаги разрешения обработки прерываний). В обработчике этот флаг сбрасывает ся, а затем устанавливается автоматически, когда передача очередного байта за вершается. В результате все остальные символы будут отправлены автоматичес ки. Когда указатель достигнет конца строки (нулевого байта)
    будет установлен программный флаг TXREGEmptyFlag, указывающий, что боль ше передавать
    Теперь мы уже почти вплотную подошли к тому, что напи сано в нашем приложении. Не хватает только обработки принятых символов, то есть преобразования их к верхнему регистру, но в этом вы без труда разберетесь сами.
    Внимательно проанализировав код приложения, вы обнаружите, что в начале работы на компьютер посылается строка приветствия
    Чтобы сделать это, достаточно двух команд:
    TXIE =. 1; // Разрешить прерывания от передатчика.
    TXIF = 1; // Сгенерировать прерывание от передатчика.
    Эмулятор терминала отправляет данные побайтно, не дожидаясь конца строки. —
    В этом примере автор для простоты нигде не проверяет состояние флага TXREGEmptyFlag. Реаль- ное приложение должно это делать. - Прим. перев.
    к микроконтроллеру периферийных устройств 161
    В отладчике MPLAB можно увидеть, что в результате компилятор добавит к программе две машинные команды.
    Для тестирования нашего устройства надо запустить программу HyperTerminal и установить соединение на скорости 1200 бит/с. Если теперь мы включим пита- ние микроконтроллера, то увидим на экране терминала приветствие. На рис.
    показан внешний вид окна программы HyperTerminal после того, как в ответ на приветствие пользователь нажал пять клавиш ABCDE, а затем клавишу Enter.
    Как и положено, микроконтроллер вернул все пять символов.
    Рис.
    Внешний вид окна программы HyperTerminal во время тестирования устройства
    При разработке кода электронного уровня я советую по возможности всегда передавать данные в виде строк в формате ASCIIZ. Чуть позже в этой главе мы будем использовать их для отображения информации на жидкокристаллическом дисплее и для реализации дистанционного управления роботом с помощью инф- ракрасных лучей. При этом, как и в нашем первом обработка информа- ции будет производиться не по отдельным символам, а целыми блоками.
    Но прежде чем перейти к описанию следующего устройства, необходимо сде- лать три замечания по только что рассмотренному.
    Первое касается соединительных проводов. Можно, конечно, подвешивать их к потолку, но это не самое оптимальное решение проблемы. Провода любой дли- ны рано или поздно оказываются слишком короткими и ограничивают площадь,
    доступную для передвижения робота; кроме того, провода могут намотаться на ось колеса. Наилучшее решение - использование стандартных радиопередающих/
    приемных модулей для реализации беспроводного интерфейса RS-232.
    Второе замечание относится к скорости передачи данных. В нашем примере мы установили ее равной бит/с. Разумеется, по сегодняшним меркам это очень мало.
    Не удивлюсь, если ваш домашний Ethernet работает на скорости
    Мбит/с, а это
    6-2101

    162 Устройства управления роботами на пять порядков больше, чем 1200 бит/с. Но прежде чем пытаться протестиро- вать работу нашего устройства на более высоких скоростях, следует убедиться,
    что оно работает на низких. Кроме того, при невысоких скоростях передачи сни- жаются электромагнитные наводки и повышается надежность канала связи, что позволяет работать с более длинными соединительными проводами и более про- стой аппаратурой передачи/приема данных.
    Более высокие скорости требуются только при объеме передаваемых данных (например, если ваш робот оснащен телекамерой). Что касается рассмат- риваемого устройства, вы все равно не сможете нажимать клавиши чаще, чем не- сколько раз в секунду.
    Последнее замечание - о системе команд, которыми компьютер обменивается с роботом. Конечно, быстрее и проще передавать закодированные короткие коман- ды (не длиннее одного байта), но я все же рекомендую использовать удобочитае- мые строковые команды. Даже если в дальнейшем вы захотите разработать гра- фический интерфейс пользователя (Graphical User Interface - GUI), с помощью которого закодированные короткие команды будут переводиться в формат, удоб- ный для восприятия, предлагаемый мной подход упростит процесс отладки ва- ших приложений. Ведь еще до разработки специальных программ вы сможете проводить тестирование своего устройства с помощью простого эмулятора тер- минала, используя обычные строковые команды.
    4.8. ДВУНАПРАВЛЕННЫЙ СИНХРОННЫЙ ИНТЕРФЕЙС
    Интерфейс RS-232 использует асинхронный протокол передачи данных, потому что приемник не получает какого-либо сигнала тактирования в явном виде.
    На рис. 4.20 показаны временные диаграммы сигналов при синхронной пере- даче данных. Здесь приемник фиксирует данные на линии Data по переднему или заднему фронту синхроимпульсов Clock.
    Рис. 4.20. Синхронная передача данных
    Имеется большое число различных синхронных последовательных протоколов.
    Многие из них широко примеряются, и для их реализации доступны необходимые аппаратные средства. Недостаток этих интерфейсов состоит в том, что при под- ключении нескольких устройств они требуют использования как минимум одной дополнительной управляющей линии для выбора активного устройства, которое в настоящий момент должно передавать или получать информацию.
    Этот недостаток отсутствует у интерфейса PC. Он был первоначально разрабо- тан фирмой Philips в конце 1970-х годов специально для того, чтобы обеспечивать

    Подключение к микроконтроллеру периферийных устройств 163
    такой способ подключения периферийных устройств к микропроцессорам, кото- рый не требовал бы использования традиционных шин адреса, данных и управле- ния, а кроме того, позволял бы нескольким микропроцессорам работать с одними и теми же периферийными устройствами
    Интерфейс PC использует всего две линии - они именуются SCL (Serial
    Clock) и SDA (Serial Data). Первая предназначена для передачи синхроимпуль- сов (они формируются тем устройством, которое в настоящий момент передает данные), а вторая — для передачи самих данных и команд, управляющих этим процессом. Обе линии имеют открытый коллектор (как и во многих других слу- чаях, когда необходимо, чтобы к одной линии могло подключаться несколько раз- личных устройств), поэтому требуют подключения «подтягивающих» резисторов сопротивлением 1-10 кОм.
    Для примера на рис. 4.21 показана структурная схема устройства управления стереосистемой.
    Рис.
    Устройство управления стереосистемой на основе интерфейса
    В обмене информацией по шине PC всегда принимают участие два устройства -
    ведущее (master,
    и ведомое. Ведущее устройство вырабатывает синхро- импульсы, а принимать или передавать данные может как задатчик, так и ведомое устройство.
    Пока ни одно устройство не начало передачу данных, благодаря «подтягиваю- щим» резисторам на обоих линиях шины PC действует напряжение высокого уровня. Если какое-либо устройство собирается начать передачу данных, оно сна- чала проверяет, свободна ли шина. Ведь в каждый момент времени ведущим на шине может быть только одно устройство. Напряжение высокого уровня на ли- нии SCL показывает, что шина пока свободна.
    Перед началом процесса передачи задатчик устанавливает напряжение низ- кого уровня сначала на линии SDA а затем на линии SCL (рис. 4.22). В процессе передачи данных такое состояние линий невозможно, поскольку сигнал на ли- нии SDA не должен изменяться во время действия тактового импульса на ли- нии SCL.
    Затем начинается передача данных от ведущего устройства к ведомому (slave)
    или наоборот, но в любом случае источником синхроимпульсов является задат-
    Данные фиксируются приемником по заднему фронту синхроимпульсов.

    164 Устройства управления роботами
    Линия Стартовая Передава- не занята бит ция
    Стоповая Линия комбина- не занята ция
    Рис. 4.22. Начало и конец передачи данных по интерфейсу PC
    В конце передачи ведущее устройство прекращает генерацию синхроимпуль- сов; в результате на линии SCL благодаря «подтягивающему» резистору устанав- ливается напряжение высокого после этого отключается передатчик, из-за чего устанавливается высокий уровень на линии SDA — иными словами, повторя- ется ситуация, обратная той, что наблюдалась перед началом передачи.
    В отличие от интерфейса RS-232, передача данных производится начиная со старшего бита; при этом используются обычные логические уровни микросхем
    ТТЛ/КМОП. После передачи последнего (восьмого) бита каждого байта во вре- мя действия очередного синхроимпульса передатчик отключается от линии SDA
    чтобы дать возможность приемнику подтвердить получение данных. Для этого приемник должен выставить на линии SDA сигнал низкого уровня. Перед посыл- кой очередного бита сигнал низкого уровня действует на обеих линиях. Времен- ные диаграммы на рис. 4.23 иллюстрируют процесс передачи одного байта дан- ных по интерфейсу PC.
    Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0 Бит
    подтверждения
    - - - - Приемник
    Рис. 4.23. Передача данных по интерфейсу
    В некоторых случаях бит подтверждения передается высоким уровнем сигнала,
    даже если прием прошел успешно. Это показывает, что обмен закончен и передатчик
    (обычно являющийся либо ведущим устройством, либо который не

    Подключение к микроконтроллеру периферийных устройств 165
    должен сам начинать операцию обмена) может подготовиться к получению сле- дующего л
    Минимальная скорость передачи по интерфейсу PC ничем не ограничена. И пе- редатчик, и приемник могут при необходимости замедлять процесс обмена на не- определенное время.
    делает это, удерживая сигнал низкого уровня на линии SCL после приема или передачи предыдущего бита. Ведомое устройство может замедлить работу удерживая сигнал на линии SCL на низком уровне после приема или передачи очередного бита (увидев не смо- жет выставить на линии SCL следующий синхроимпульс).
    Но существуют две максимальные скорости передачи. В так называемом стан-
    дартном режиме это 100 Кбит/с (частота синхроимпульсов 100 кГц), а в быстром
    режиме - 400 Кбит/с (частота синхроимпульсов 400 кГц). На рис. 4.24 показаны минимальные временные задержки для обоих режимов (все значения указаны в микросекундах).
    Линия Стартовая Передава- не занята емый бит ция
    Указаны минимально допустимые временные промежутки (мкс)
    Стоповая Линия комбина- не занята ция
    Рис. 4.24.
    временные задержки
    при двух режимов передачи данных по интерфейсу PC
    На рис. 4.25 показан формат команд, используемых для управлением процес- сом передачи данных по интерфейсу PC.
    Адрес получателя данных задается семью битами. Старшие четыре бита адре- са определяют тип устройства, а оставшиеся три младших бита указывают, како- му именно устройству (из восьми возможных) этого типа предназначена посыла- емая информация.
    Этот режим используется, когда микроконтроллер запрашивает данные у какого-либо периферий- ного устройства. В этом случае микроконтроллер является приемником данных. Если вместо бита подтверждения микроконтроллер выставит сигнал высокого уровня, то ведомое устройство «пой- мет», что следующую порцию данных пересылать не нужно. - Прим.

    166 Устройства управления роботами
    Рис. 4.25.
    управляющих интерфейса PC
    В некоторых случаях требуется чуть усложнять протокол обмена. Например,
    при чтении информации из памяти EEPROM (или записи данных в память) за- датчик должен сначала установить стартовую последовательность, чтобы пере- слать адрес нужной ячейки памяти, а затем снова выполнить стартовую последо- вательность, чтобы теперь уже считать данные из памяти (или записать их).
    Для того чтобы ведущими на шине могли быть различные устройства, необхо- дим какой-либо протокол разрешения коллизий (конфликтов). Коллизия возни- кает, когда два устройства, одновременно проверив состояние шины и обнаружив,
    что она пока свободна, начинают передачу данных.
    Конфликты разрешаются благодаря тому, что на линии с открытым коллекто- ром подача сигнала высокого уровня реализуется на самом деле простым отклю- чением активного устройства (вспомните о «подтягивающих» резисторах). В этом случае побеждает всегда то устройство, которое выставило сигнал низкого уров- ня. Тогда второе устройство, «увидев», что действующий на линии уровень на- пряжения не совпадает с тем, который оно пытается установить, «понимает», что на шине активен еще один и на время отключается, чтобы дать ему воз- можность беспрепятственно закончить обмен информацией.
    Реализация интерфейса с помощью микроконтроллеров весьма проста. Однако из-за программной его реализации трудно достичь высоких ростей передачи. Даже максимальная скорость стандартного режима (100 Кбит/с)
    может оказаться недостижимой.
    Я считаю, что программная реализация интерфейса все же является наи- лучшим решением, если кроме микроконтроллера на шине не может быть других
    Ведь в этом случае не требуется синхронизировать его работу с каки- ми-либо быстрыми устройствами, в которых используется аппаратная реализа- ция этого интерфейса.
    4.9. УСТРОЙСТВА ИНДИКАЦИИ
    Программные такие как MPLAB, могут дать разработчику рую уверенность в том, что его устройство работает правильно. К сожалению, они оказываются бессильны при необходимости смоделировать сложные операции

    Подключение к микроконтроллеру периферийных устройств 167
    ввода-вывода. В ряде случаев вы не можете с достаточной точностью задать вход- ные сигналы, а следовательно, и проверить, как на них реагирует микроконтрол-
    . лер. Для более точного моделирования различных ситуаций необходим внутри- схемный эмулятор, но он требует непосредственного подключения отлаживаемой схемы к компьютеру; в результате соединительные провода оказываются еще од- ной причиной того, что попытки точно смоделировать поведение робота в реаль- ной ситуации терпят неудачу.
    В некоторых случаях решение проблемы оказывается довольно простым: для ин- дикации текущего состояния робота и управляющей программы можно использовать и/или звуковые излучатели. Часто более изощренные методы индика- ции (вроде жидкокристаллического дисплея) оказываются менее эффективными.
    При добавлении световых или звуковых индикаторов своему проекту (их можно было бы назвать устройствами обратной связи - ведь они помогают пользователю или разработчику понять, что происходит с роботом, застрявшим в дальнем углу комнаты) важно помнить, что неумелое их использование может обернуться именно теми проблемами, которые мы пытались решить с их помо- щью. Ведь световой или звуковой сигнал, вырабатываемый этими индикаторами,
    может воздействовать на свето- или датчики робота, мешая их нормальной работе.
    Для индикации различных ситуаций можно использовать комбинации свето- диодов разного цвета, а также звуковой зуммер, вырабатывающий разное количе- ство гудков или генерирующий сигналы различной высоты.
    Тем не менее я не рекомендую использовать сигналы разной тональности или различной длительности, так как не у всех людей идеальный слух или хорошее чувство ритма. Проще подавать сигналы при помощи разного количества гудков одинаковой длительности и высоты. Однако учтите: если число гудков превыша- ет 3, всегда найдется кто-нибудь, кто ошибется при счете.
    Если вы не желаете добавлять к своему устройству световую или звуковую сигнализацию, так как боитесь, что из-за этого он станет больше походить на иг- рушку, примите во внимание, что после отладки программы вы всегда можете отключить ее.
    4.10. СВЕТОДИОДНЫЕ ИНДИКАТОРЫ
    Светодиодные индикаторы - это наиболее распространенные устройства вывода информации в современной электронике. Они недороги, и их крайне легко ис- пользовать в разных ситуациях. Они могут различаться по форме и цвету; на их основе могут быть выполнены числовые и текстовые дисплеи.
    Для использования в схемах нам потребуется знать некоторые электрические характеристики светодиодов. Прежде всего, не следует забывать, что они, как и обычные диоды, проводят ток только в одном направлении. Современные све- тодиоды начинают светиться уже при токе 5 мА, хотя многим (особенно самым ярким) требуется для этого не менее 20 мА.

    168 Устройства управления роботами
    При подключении к микроконтроллеру анод светодиода обычно соединяют с положительной шиной питания, а катод соединяют с нужным выводом микро- контроллера через ограничивающий резистор, как показано на рис. 4.26. В этом случае светодиод загорается, если на выходе микроконтроллера действует сигнал низкого уровня.
    Vcc
    Микроконтроллер
    • Светодиод
    Ограничивающий резистор
    Рис. 4.26. Подключение светодиодного излучателя к микроконтроллер/
    Если подключить светодиод между выводом микроконтроллера и нулевой шиной питания, то может оказаться, что выходной ток микроконтроллера (на- пример,
    будет слишком мал, чтобы обеспечить достаточное свечение све- тодиода.
    Падение напряжения на светодиоде в прямом включении обычно составляет около 2 В, что заметно отличается от аналогичного показателя у простого крем- ниевого диода (0,6-0,7 В). Это напряжение необходимо знать при выборе сопро- тивления ограничивающего резистора. Обычно для работы с сиг- налами я использую резисторы сопротивлением
    470
    '
    Для изменения яркости свечения можно ис- пользовать модуляцию
    (ШИМ) выходного сигнала микроконтроллера.
    Это проще, чем пытаться управлять сопротивле- нием резистора. Мы рассмотрим соответствую- щий пример чуть позже в этой главе.
    Для отображения цифр и некоторых букв час- то используется светодиодный индикатор (рис. 4.27). В таких индикаторах като- ды или аноды всех светодиодов соединены друг с другом и имеют один общий вывод. Поэтому различают светодиодные индикаторы с общим ка-
    тодом или с общим анодом.
    Катод [
    X
    1   ...   9   10   11   12   13   14   15   16   ...   33


    написать администратору сайта