Московский государственный технический университет им. Н. Э. Баумана

Факультет информатики и систем управления

Автоматизированные системы обработки информации и управления

 

А.

Методические указания

«Введение в программирование микроконтроллеров AVR»

Лабораторная работа №3

Москва 2012г.

Цель работы

Изучить взаимодействие микроконтроллера с внешними устройствами на примере интерфейса UART и сервомотора.

Введение

В прошлой лабораторной работе Вами была изучена работа таймера и система прерываний в МК AVR ATMega16. Эти знания понадобятся для реализации программной части блока управления сервомотором с персонального компьютера. Для этой лабораторной работы необходимо изучить интерфейсы UART, RS-232 и логику работы простых сервомоторов.

Интерфейс UART

Большинство МК AVR имеют аппаратную реализацию интерфейса UART, который является одним из простейших и широко распространенных стандартов передачи данных.

Логическое устройство интерфейса UART

Приёмник соединён с передатчиком. Передатчик устанавливает 0 на линии, после чего через интервал T1 начинает отправлять биты, выдерживая между ними интервал T2.

Приёмник отслеживает падение напряжения на линии передачи, после чего тоже выжидает T1 и через каждые T2 единиц времени считывает значение на линии. В конце должен идти SP, стоповый бит. На схеме ниже приведён простейший вариант работы:

Описание: C:\Users\Anton\Downloads\uart.GIF

Также интерфейс UART позволяет использовать более одного стопового бита, передавать 5-9 бит информации и проводить контроль чётности, однако такие аспекты работы в данной ЛР не рассматриваются.

НЕ нашли? Не то? Что вы ищете?

RS-232

Этот интерфейс имеет широко известное «народное» название – COM порт. Принцип передачи а этом интерфейсе абсолютно такой же, как и в UART, однако он использует отличные от МК уровни напряжений, поэтому необходимо использование схемы-преобразователя напряжений (например, в макетной плате установлена MAX232). Именно ввиду того, что один и тот же интерфейс поддерживается и ПК, и МК, он до сих пор является достаточно распространённым.

UART в AVR

В МК AVR существует аппаратная реализация интерфейса UART. Для работы с ним используется блок регистров, перечисленных на вкладке USART в окне IOView.

UBRRL и UBRRH – регистры, устанавливающие скорость передачи данных. В данной ЛР используется стандартная скорость в 9600 бит/c. Значение регистров рассчитывается по формуле XTAL/(16*BR)-1, где XTAL – тактовая частота МК, а BR – скорость передачи.

UCSRA – регистр флагов и контроля. Флаги RXC, TXC и UDRE сигнализируют об окончании приёма, передачи и об освобождении регистра данных, вместе с их установкой происходит соответствующее прерывание. Далее идут флаги FE, DOR и PE, сигнализирующие о наличии ошибок. Бит U2X удваивает скорость передачи. В этой ЛР его следует установить в 0. Последний бит – MPCM (Multi-processor Communication Mode), использование которого тоже выходит за рамки текущей ЛР.

UCSRB – регистр управления. Биты RXCIE, TXCIE, UDRIE разрешают прерывания по окончании приёма, передачи и опустошению UDR. RXEN и TXEN разрешают использование ножек Rx и Tx для приёма и передачи данных. UCSZ2 (вместе с UCSZ1:0 в регистре UCSC) устанавливает количество битов посылки. Последние два бита являются девятыми битами при приеме и передаче девятибитных сообщений.

UCSRC – второй регистр управления. Старший бит URSEL – селектор. При записи в UCSRC значение этого бита должно быть равно 1, иначе данные будут записаны в UBRRH (чем вызвано такое техническое решение, остаётся загадкой). UMSEL – бит выбора режима. В данной ЛР используется асинхронный режим, поэтому здесь должно быть 0. Биты UPM1:0 регулируют проверку чётности (в данной ЛР не используется, равно 0). USBS – выбор количества стоповых битов. Для стандартной посылки стоповый бит один, поэтому здесь имеем 0. UCSZ1:0 устанавливают формат посылки вместе с битом UCSZ2 из регистра UCSRB, для стандартной 8мибитной посылки должны быть равны 11b. Последний бит UCPOL не используется в асинхронном режиме.

UDR – регистр данных. В реальности представляется двумя разными регистрами, один для записи, другой для чтения. Записанный в него байт передаётся через UART, а принятый считывается из него.

Пример инициализации UART

Для примера установим стандартную 8-мибитную посылку с одним стоповым битом.

.equ XTAL = 8000000 ; Тактовая частота

.equ baudrate = 9600 ; Скорость передачи

.equ bauddivider = XTAL/(16*baudrate)-1 ; Формула для расчёта

; Устанавливаем скорость передачи

LDI R16, low(bauddivider)

OUT UBRRL, R16

LDI R16, high(bauddivider)

OUT UBRRH, R16

; Сбрасываем все флаги

LDI R16,0

OUT UCSRA, R16

; Разрешаем прерывание при приёме и сам приём

LDI R16, (1<<RXEN)|(0<<TXEN)|(1<<RXCIE)|(0<<TXCIE)|(0<<UDRIE)

OUT UCSRB, R16

; Устанавливаем стандартную 8мибитную посылку

LDI R16, (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)

OUT UCSRC, R16

. . .

; Прерывание чтения байта из USART

USART_READ:

PUSH R16 ; Сохраняем состояние

IN R16, SREG

PUSH R16

IN R16, UDR ; Считываем байт

. . . ; Делаем что-то важное

POP R16 ; Восстанавливаем состояние

OUT SREG, R16

POP R16

RETI

Сервомотор

Используемый в ЛР сервомотор представляет собой электродвигатель, вращение которого через многоступенчатый редуктор передаётся на основную ось, закреплённую на потенциометре. Таким образом сервомотор «знает» своё текущее положение и может его удерживать. Внутри находится электронная схема, преобразующая входной сигнал в угол поворота привода.

Управление сервомотором

При приходе внешнего сигнала, исходя из текущего положения, схема управления генерирует импульс определённой длительности. Затем пришедший и сгенерированный импульсы сравниваются и их разность подаётся на мотор с определенной полярностью. В результате двигатель немного поворачивается в сторону сокращения этой разности. Поскольку импульсы идут достаточно часто (через каждые 15-20 мс), двигатель вращается непрерывно. В документации на сервомотор указаны длительности входных импульсов для крайних положений, остальные высчитываются пропорционально. Для используемого в ЛР мотора эти длительности составляют соответственно 0.5-2.2 мс.

Логика работы блока управления

Изучив приведённый выше материал можно спроектировать логику работы блока. Так как управление происходит с компьютера, данные МК будет получать по интерфейсу UART, после чего в соответствии с этими данными он должен будет установить положение сервомотора, посчитав необходимую длительность импульса и циклически передавая её на управляющий вход сервомотора.

Выполнение работы

1.  Ознакомится с методическими указаниями.

2.  Написать программу управления сервомотором с компьютера.

3.  Удостовериться в работоспособности программы в эмуляторе AVRStudio.

4.  Удостовериться в правильности длительности генерируемых импульсов в эмуляторе ISIS Proteus.

5.  Запрограммировать МК, соединить макет с компьютером и проверить работу при помощи предоставляемой компьютерной программы.

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством