Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Программа ввода вывода через UART↑ Стр 1 из 8Следующая ⇒ Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Лабораторная работа № 1 ЗНАКОМСТВО С ПРОГРАММОЙ Visual Micro Lab ПРОГРАММа ввода выода через UART.......................... 5 Лабораторная работа № 2 ПРОГРАММа ввода с UART и вывода в LCD модуль......................................................................... 22 Лабораторная работа № 3 ПРОГРАММа управлениЯ таймер–счетчиком в режиме широтно–импульсной модуляции....... 37 Лабораторная работа № 4 ПРОГРАММа ввода с клавиатуры и вывода в LCD модуль......................................................................... 52 Лабораторная работа № 5 ПРОГРАММирование в среде Visual Micro Lab в мультипроцессорном режиме................................ 62 Лабораторная работа № 6 ПРОГРАММирование аналогоцифрового преобразователя микроконтроллеров................... 67 Лабораторная работа №7 ПРОГРАММирование аналогового компаратора микроконтроллеров........................... 74 Лабораторная работа № 8 ПРОГРАММирование микроконтроллеров на языке СИ............................................................................ 82 Лабораторная работа № 9 РАЗРАБОТКА ПРОГРАММЫ ввода, вычисления и вывода результата............................................................ 86 БИБЛИОГРАФИЧЕСКИЙ СПИСОК.................................................. 88 Приложение 1. Структурная схема микроконтроллера ATmega16....................................... 89 Приложение 2. Типы корпусов и наименование выводов микроконтроллера ATmega16................. 90 Приложение 3. Регистры ввода–вывода микроконтроллера ATmega16....................................... 91 Приложение 4. Система команд микроконтроллера АТmеgа16 и директивы языка Assembler............... 93 Введение
Микроконтроллеры семейства AVR отличаются высоким быстродействием и низким энергопотреблением. В лабораторных работах рассматриваются структура, система команд, периферийные устройства и работа микроконтроллеров, выпускаемых фирмой Atmel. Корпорация Atmel (США) хорошо известна как на мировом, так и на российском рынке электронных компонентов и является одним из признанных мировых лидеров в разработке и производстве сложных изделий современной микроэлектроники — устройств энергонезависимой памяти высокого быстродействия и минимального удельного энергопотребления, микроконтроллеров общего назначения и микросхем программируемой логики. Лабораторные работы познакомят Вас с одним из интересных и активно развиваемых Atmel Corp. направлений современной микроэлектроники – линией 8–разрядных высокопроизводительных RISC (Reduced Instruction Set Computers) микроконтроллеров общего назначения, объединенных общей маркой AVR. Можно считать, что AVR постепенно становится еще одним индустриальным стандартом среди 8–ми разрядных микроконтроллеров общего назначения. В настоящее время в производстве у Atmel Corp. находятся три семейства AVR: «tiny», «classic» и «mega». Visual Micro Lab (VMLab) представляет собой программный продукт, позволяющий производить моделирование, тестирование, разработку и отладку программных и технических средств микропроцессорных систем, содержащих микроконтроллеры AVR фирмы ATmel и различные компоненты, в том числе резисторы, конденсаторы, ключи, светодиоды, аналоговые, импульсные и другие генераторы, источники напряжения, операционные усилители и компараторы, логические элементы, 8–ми разрядные цифроаналоговые преобразователи, интерфейс RS232, LCD модули, I2C интерфейсы и другие устройства. С помощью пакета можно проектировать простейшую мультипроцессорную сеть, состоящую из двух микроконтроллеров (микропроцессорных систем) и проводить их совместное моделирование и тестирование. Для работы программного комплекса необходим IBM – совместимый компьютер с процессором Pentium 4 и выше. Операционная система Windows XP и выше. Эффективность использования пакета VMLab определяется: - достаточно простым интерфейсом пользователя; - большим количеством моделей микроконтроллеров и компонентов микропроцессорной системы; - возможностью разрабатывать программы на языке высокого уровня СИ; - свободным распространением пакета VMlab (версия 3.12) и транслятора с языка СИ WinAVR. Лабораторная работа №1
ЗНАКОМСТВО С ПРОГРАММОЙ Visual Micro Lab ПРОГРАММа ввода выВода через UART Цель работы: Освоение основных правил разработки и отладки прикладного программного обеспечения на языке AVR Ассемблере для микропроцессорных систем на базе AVR микроконтроллеров фирмы Atmel.
Программно–аппаратные средства Порты ввода/вывода Порт B – 8–разрядный двунаправленный порт. Для обслуживания порта отведено три регистра: регистр данных – PORTB ($18, $38), регистр направления данных – DDRB ($17, $37) и выводы порта B – PINB ($16, $36). Адрес выводов порта B предназначен только для чтения, в то время как регистр данных и регистр направления данных – для чтения/записи. Все выводы порта имеют отдельно подключаемые подтягивающие резисторы. Дополнительные функции выводов порта B приведены в таблице 1. Таблица 1. Альтернативные функции выводов порта B
Для порта D зарезервированы 3 ячейки памяти – регистр PORTD ($12, $32), регистр направления данных – DDRD ($11, $31) и выводы порта D – PIND ($10, $30). Регистры данных и направления данных могут читаться/записываться, ячейка PIND – только для чтения. Порт D – 7-разрядный двунаправленный порт со встроенными подтягивающими регистрами. Некоторые из выводов порта имеют альтернативные функции, как показано в таблице 2. Таблица 2. Альтернативные функции порта D
Порт A (PA0 – PA7) имеет альтернативные функции входов аналого–цифрового преобразователя ADC – ADC7. Для порта зарезервированы 3 ячейки памяти – регистр PORTA ($1B, $3B), регистр направления данных – DDRA ($1A, $3A) и выводы порта A – PIND ($19, $39). Порт C (PC0 – PC7) также имеет альтернативные функции, представленные в приложении 2. Для порта зарезервированы 3 ячейки памяти: регистр PORTC ($15, $35), регистр направления данных – DDRC ($14, $34) и выводы порта C – PINC ($13, $33).
Последовательный иньерфейс ввода/вывода UART
Порт UART содержит передатчик, приемник, тактовый генератор и аппаратуру управления передачей и приемом. В состав порта входят регистр данных передатчика UDR (Т), регистр данных приемника UDR (R), регистр управления UCR или UCSRB (№ $0А), регистр состояния USR или UCSRA (№ $0В), регистр задания скорости передачи/приема UBRR (№ $09) и другие элементы. Передатчик готов к работе при установке в единичное состояние разряда TXEN регистра управления UCR. Передача кадра начинается при загрузке байта в регистр UDR (Т). Загрузку можно выполнять при единичном состоянии разряда UDRE регистра состояния USR. При сбросе микроконтроллера в исходное состояние устанавливается UDRE = 1. Загруженный байт передается в сдвигающий регистр передатчика TSR и происходит выдача кадра на выход микроконтроллера TXD. При нулевом состоянии разряда CHR9 регистра UCR формируется кадр из десяти битов. При CHR9 = 1 кадр содержит одиннадцать битов. Значение дополнительного бита в этом случае должно быть указано в разряде ТХВ8 регистра UCR. Первый байт при загрузке немедленно передается в регистр TSR и разряд UDRE регистра USR сохраняет единичное состояние, что позволяет сразу после загрузки первого байта загружать в регистр UDR (Т) второй байт. Второй и последующие байты сохраняются в регистре UDR(Т) до завершения выдачи из регистра TSR предыдущего кадра. При этом разряд UDRE регистра USR находится в нулевом состоянии и загрузка очередного байта в регистр UDR (T) запрещена. При завершении выдачи кадра из регистра TSR и отсутствии очередного байта в регистре UDR (Т) устанавливается в единичное состояние разряд ТХС регистра USR и при единичном состоянии разряда TXCIE регистра UCR в блок прерываний поступает запрос прерывания UART ТХС. Разряд ТХС регистра USR сбрасывается в нулевое состояние аппаратно при переходе микроконтроллера к выполнению соответствующей прерывающей программы или программно при выполнении команды установка бита в единичное состояние. При единичном состоянии разряда UDRE регистра USR и единичном состоянии разряда UDRIE регистра UCR в блок прерываний поступает запрос прерывания UART DRE. Разряд UDRE сбрасывается в нулевое состояние при записи байта в регистр UDR (Т). Прерывающая программа, выполняемая по запросу прерывания UART DRE, должна содержать команду записи в регистр UDR (Т) для прекращения действия этого запроса прерывания. Приемник готов к работе при установке в единичное состояние разряда RXEN регистра UCR. При этом вход приемника RXD подключается к выводу определенного порта микроконтроллера. Получаемая последовательность значений вводится в сдвигающий регистр приемника RSR. Если принимается кадр из одиннадцати битов (CHR9 = 1), дополнительный бит принимается в разряд RXB8 регистра UCR. Если на месте ожидаемого стопового бита сигнал имеет нулевое значение, устанавливается в единичное состояние разряд FE регистра USR (ошибка формата). Разряд FE сбрасывается в нулевое состояние при появлении единичного значения стопового бита. Принятый байт из регистра RSR переписывается в регистр UDR (R). При этом устанавливается в единичное состояние разряд RXC регистра USR и при единичном состоянии разряда RXCIE регистра UCR в блок прерываний поступает запрос прерывания UART RXC. Разряд RXC регистра USR сбрасывается в нулевое состояние при чтении регистра UDR (R). Прерывающая программа, выполняемая по запросу прерывания UART RXC, должна содержать команду чтения из регистра UDR для прекращения действия этого запроса. Если при завершении приема кадра принятый ранее байт не считан из регистра UDR (R), устанавливается в единичное состояние разряд OR регистра USR (состояние переполнения). Разряд OR сбрасывается в нулевое состояние при передаче байта из регистра RSR в регистр UDR (R). Скорость передачи и приема BR, бит/с, зависит от частоты тактового сигнала микроконтроллера fCK и числа (UBRR), записаного в регистре UBRR. В порте UART микроконтроллеров типа m16 регистр управления вместо имени UCR имеет имя UCSRB, а регистр состояния вместо имени USR — имя UCSRA. Регистр UCSRA имеет дополнительный разряд МРСМ. Наличие разряда МРСМ позволяет организовать простейшую локальную сеть (мультипроцессорную систему). В микроконтроллере типа m16, кроме того, регистр UCSRA имеет дополнительный разряд U2X, а для задания скорости передачи используются два регистра — регистр UBRR (№$09) для задания младших восьми разрядов кода числа и регистр UBRRHI (№$20) для задания старших четырех разрядов кода числа. Выводы PD0 и PD0 микроконтроллера ATmega16 используются альтернативно как сигналы RXD и TXD соответственно порта UART (USART). Управление USART осуществляется через регистры ввода/вывода. В контроллере ATmega16 для управления используется 5 регистров: 0 Регистр UDR (UART Data Register) – регистр данных UART; 0 Регистр UCSRA (UART Control and Status Register A) –регистр А управления и статуса UART; 0 Регистр UCSRB (UART Control and Status Register B) – регистр В управления и статуса UART; 0 Регистры UBRRH1 и UBRR (UART Baud Rate registers) – регистры скорости передачи. Регистр данных UDR физически является двумя регистрами: регистром передачи данных и регистром приема данных по одному адресу $0C ($2C). Скорость обмена данными в UART задается с помощью 12–битного регистра UBRR, который размещается в двух 8–битных регистрах UBRR, UBRRH1. Установленный в состояние 1 бит TXEN регистра UCSRB разрешает передачу данных UART. Передача инициируется записью передаваемых данных в регистр данных UDR. Данные пересылаются из UDR в сдвиговый регистр передачи в следующих случаях: 0 Новый символ записан в UDR после того как был выведен из регистра столовый бит предшествовавшего символа. Сдвиговый регистр загружается немедленно. 0 Новый символ записан в UDR прежде, чем был выведен столовый бит предшествовавшего символа. Сдвиговый регистр загружается после выхода стопового бита передаваемого символа, находившегося в сдвиговом регистре. Если из 10(11)–разрядного сдвигового регистра передачи выведена вся информация, устанавливается бит UDRE. При установленном в состояние 1 бите UDRE приемопередатчик готов принять следующий символ. Запись в UDR очищает бит UDRE. В то самое время, когда данные пересылаются из UDR в 10(11)–разрядный сдвиговый регистр, бит 0 сдвигового регистра сбрасывается в состояние 0 (состояние 0 – стартовый бит) а бит 9 или 10 устанавливается в состояние 1 (состояние 1 – стоповый бит). Если в регистре управления UCSRB установлен бит CHR9 (т.е. выбран режим 9–разрядного слова данных), то бит TXB8 регистра UCSRB пересылается в бит 9 сдвигового регистра передачи. Сразу после пересылки данных в сдвиговый регистр тактом бод–генератора стартовый бит сдвигается на вывод TxD. За ним следует LSB данных. Когда будет выдан стоповый бит, сдвиговый регистр загружается новой порцией данных, если она была записана в UDR во время передачи. В процессе загрузки бит UDRE находится в установленном состоянии. Если же новые данные не будут загружены в UDR до выдачи стопового бита, флаг UDRE остается установленным. В этом случае, после того как столовый бит будет присутствовать на выводе TxD в течение одного такта, в регистре управления и статуса UCSRA устанавливается флаг завершения передачи TxC. Логика восстановления данных производит выборку состояний вывода RxD с частотой в 16 раз большей, чем частота передачи. При нахождении линии в пассивном состоянии одиночная выборка нулевого логического уровня будет интерпретироваться как падающий фронт стартового бита и будет запущена последовательность детектирования стартового бита. Считается, что первая выборка обнаружила первый нулевой логический уровень вероятного стартового бита. На выборках 8, 9 и 10 приемник вновь тестирует вывод RxD на изменение логических состояний. Если две или более из этих трех выборок обнаружат логические 1, то данный вероятный стартовый бит отвергается как шумовой всплеск и приемник начнет выявлять и анализировать следующие переходы из 1 в 0. Если же был обнаружен действительный стартовый бит, то начинает производиться выборка следующих за стартовым битом информационных битов. Эти биты также тестируются на выборках 8,9 и 10. Логическое состояние бита принимается по двум и более (из трех) одинаковым состояниям выборок. Все биты вводятся в сдвиговый регистр приемника с тем значением, которое было определено тестированием выборок. При поступлении стопового бита необходимо, чтобы не менее двух выборок из трех подтвердили прием стопового бита (показали высокий уровень). Если же две или более выборок покажут состояния 0, то при пересылке принятого байта в UDR в регистре управления и статуса UCSRA устанавливается бит ошибки кадра FE (Framing Error). Для обнаружения ошибки кадра пользователь перед чтением регистра UDR должен проверять состояние бита FE. Флаг FE очищается при считывании содержимого регистра данных UART (UDR). Вне зависимости от того принят правильный столовый бит или нет, данные пересылаются в регистр UDR и устанавливается флаг RXC в регистре управления UCSRA. Регистр UDR фактически является двумя физически отдельными регистрами, один из которых служит для передачи данных и другой для приема. При считывании UDR обращение ведется к регистру приема данных, при записи обращение ведется к регистру передачи. Если выбран режим обмена 9–разрядными словами данных (установлен бит CHR9 регистра UCR), при пересылке данных в UDR бит RXB8 регистра UCR загружается из девятого бита сдвигового регистра передачи. Если после получения символа к регистру UDR не было обращения, начиная с последнего приема, в регистре UCSRA устанавливается флаг переполнения OR. Это означает, что новые данные, пересылаемые в сдвиговый регистр, не могут быть переданы в UDR и потеряны. Бит OR буферирован и доступен тогда, когда в UDR читается байт достоверных данных. Пользователю, для обнаружения переполнения, необходимо всегда проверять флаг OR после считывания содержимого регистра UDR. При очищенном (сброшенном в логическое состояние 0) бите RXEN регистра UCR прием запрещен. Регистр UCSRA имеет биты следующего назначения: - Бит 7 - RXC - прием завершен. - Бит 6 - TXC - передача завершена. - Бит 5 - UDRE - регистр данных пуст. - Бит 4 - FE -ошибка кадра. - Бит 3 - OR -переполнение данных. - Бит 1 - U2X -удвоение скорости передачи. - Бит 0 - MPCM -режим мультипроцессорного обмена.
Регистр UCSRB имеет биты следующего назначения: - Бит 7 - RXCIE -разрешение прерывания по завершению приема. - Бит 6 - TXCIE -разрешение прерывания по завершению передачи. - Бит 5 - UDRIE -Разрешение прерывания по пустому регистру данных. - Бит 4 - RXEN -разрешение приемника. - Бит 3 - TXEN - разрешение передатчика. - Бит 2 -CHR9 - режим 9–разрядных символов. - Бит 1 -RXB8 - прием 8–разрядных данных. - Бит 0 -TXB8-передача 8–разрядных данных. Задание к лабораторной работе
Студент самостоятельно осваивает все основные этапы разработки и отладки программ в среде VMLab, рассмотренные ранее. В качестве примера используются файлы Lab1.asm и Lab_1.prj.
Файл Lab_1.prj .MICRO "ATmega16" .PROGRAM "lab1.asm" .TARGET "lab_1.hex" .TRACE; Activate micro trace ; Following lines are optional; if not included X1 TTY(4800 8) PD0 PD1 .plot V(PD0) v(PD1) .POWER VDD=5 VSS=0; Power nodes .CLOCK 1meg; Micro clock .STORE 250m; Trace (micro+signals) storage time
Файл Lab1.asm
.include "C:\VMLAB\include\m16def.inc" .def tmp = r16 .def X = r17 .def Y = r18 .def flag = r20; рег. флагов, значения битов будут определять ветвления в: программе 0 бит– завершение программы ; 1 бит – получено число X .def result = r21 .cseg; начало сегмента программы .org $0; установка счетчика адреса на 0 ; обработка прерываний rjmp start .org URXCaddr rjmp uart_rx .org UDREaddr reti .org UTXCaddr reti ; начало программы uart_rx:; ПП обработки прерывания – ;получение символа в UART in tmp, UDR; чтение значения из регистра данных subi tmp, $30; UART настроен на работу по умолчанию, поэтому ; преобразовываем поступающий символ sbrc flag, 0; проп. возврат, если нет флага завершения (еще не все ; символы приняты) reti
sbrc flag, 1; решаем, какое число принимается X или Y rjmp setY rjmp setX reti start:; инициализация программы ldi flag, 0; обнуление флагов ldi tmp, high(RAMEND); инициализация памяти стека out SPH, tmp ldi tmp, low(RAMEND) out SPL, tmp; завершение инициализации памяти стека ldi tmp, 12 out UBRR, tmp; установка скорости UART 4800 бод ldi tmp, 0xF8 out UCR, tmp; инициализация UART sei; глобальное включение прерываний forever:; бесконечный цикл, все действия по прерываниям nop nop rjmp forever; setX:; получаем число X и сообщаем об этом установкой флага mov X, tmp sbr flag, $02 reti setY:; получаем число Y и после этого переходим к вычислениям mov Y,tmp sbr flag, $01 rjmp main main:; вычисление значения ldi tmp, 9 mul tmp, X mov result, R0 ldi tmp, 2 mul tmp, Y add result, R0 subi result, 28 brmi negativ; если получ. отр. число, осуществляем переход rjmp bcd_result
negativ:; выделяем модуль числа и выводим символ «–» ldi tmp, $2D; вывод ACII символа «–» out UDR, tmp; получаем модуль числа com result inc result rjmp bcd_result bcd_result:; преобр. число: десятки будут храниться в X, а единицы в –Y ldi X, 0 mov Y, result subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X
subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X bcd_done: com Y inc Y subi Y, 10 com Y inc Y ldi tmp, $30 add X, tmp add Y, tmp out UDR, X wait:; ждем, пока завершится вывод числа X in tmp, UCSRA sbrs tmp, 5 rjmp wait out UDR, Y rjmp forever
Программа «Lab1.asm» осуществляет ввод символов (двух чисел от 0 до 9 каждый) через COM порт (UART, S232), результат вычисления также выводится через этот же интерфейс.
Содержание отчета
Отчет по проделанной лабораторной работе должен содержать: - структурную схему алгоритма программы на лабораторную работу; - схему электрическую принципиальную разработанного устройства; - текст программы на языке AVR Ассемблере (распечатка файла *asm); - распечатка файла проекта (*.prj); - результаты моделирования (окно VMLab с запущенной программой и результатами вычислений).
Контрольные вопросы
1. Перечислите основные этапы работы в программе VMLab? 2. Какие типы файлов создаются в программе VMLab? 3. Какие компоненты используются совместно с микроконтроллером? 4. Какие дополнительные окна используются для просмотра и управления системой на основе выбранного микроконтроллера? 5. Каким образом можно просмотреть напряжения в зависимости от времени (временные диаграммы)? Лабораторная работа № 2
ПРОГРАММа ввода с UART и вывода в LCD модуль
Цель работы: Изучение и освоение управления периферийным устройством ввода/вывода – LCD модулем, подключенным к AVR микроконтроллеру фирмы Atmel, а также дальнейшее изучение системы команд и системы прерываний.
Внешние прерывания Внешние прерывания управляются выводами INT0, INT1 и INT2. Эти прерывания обрабатываются даже тогда, когда выводы сконфигурированы как выходы. Регистр состояния SREG аппаратно не обрабатывается процессором, если программа требует сохранения SREG, то это должно производиться программой пользователя.
Задание к лабораторной работе
Изучить программу Lab2.asm и файл проекта Lab_2.prj. Отладить программу в среде VMLab, подключив необходимую периферию к микроконтроллеру AVR – интерфейс UART и LCD модуль (дисплей). На рис.18 представлены результаты моделирования программы в среде VMLab. Рис. 18. Результаты моделирования программы Lab2.asm в среде VMLab.
Файл Lab_2.prj .MICRO "ATmega16"; ATmega16 with 16 of external RAM .PROGRAM "Lab2.asm" .TARGET "Lab2.hex" .TRACE; Activate micro trace .POWER VDD=5 VSS=0; Power nodes .CLOCK 1meg; Micro clock .STORE 250m; Trace (micro+signals) storage time Xterm TTY(4800 8) PD0 PD1; place terminal Xdisp LCD(24 2 250K) PD2 PB0 PD3 PD7 PD6 PD5 PD4 nc3 nc2 nc1 nc0 .plot v(pd0) v(pd1)
Файл Lab2.asm .include "m16def.inc" .EQU OE = 0b001000; bit 3 Port D .EQU RS = 0b0001004; bit 2 Port D .DEF TEMP = R16; temporary working register .DEF PARAM = R17; Parameter transfer register .DEF DELAY = R10; .DEF DELAY1 = R11; To generate long delays .DEF DELAY2 = R12; ; Reset and interrupt vectors CSEG ORG 0x00 START: Rjmp RESET; Reset vector Org URXCaddr rjmp uart_rx Org UDREaddr Reti Org UTXCaddr Reti ; Device initialization RESET: Ldi temp, high(RAMEND); инициализация памяти стека Out SPH, temp Ldi temp, low(RAMEND) Out PORTB, TEMP Sei Nop; will do the job nop; rjmp FOREVER;; UART_RX:; Read UART chararter and Reti ; LCD Driving Library example ; Display setup for 4 bits interface LCD_SETUP: Nop nop; Data write cycle must be > 1 ms Ret ; 2.3 ms delay with 1 MHz clock. WAIT_2M: Push TEMP Ldi TEMP, 3 Mov DELAY1, TEMP W2_1: Clr DELAY2 Dec DELAY2; Start at 0xFF W2_2: Dec DELAY2 brne W2_2 Dec DELAY1 brne W2_1 Pop TEMP Ret ; Display a welcome message. Mesage comes at the end LCD_HELLO: ldi ZH, HIGH(2*TXT) ldi ZL, LOW(2*TXT) L3A: Lpm; From prog mem into R0 Mov PARAM, R0 Tst PARAM Brne L3B Rjmp L4 L3B: Brne L3C Rjmp L3D L3C: rcall LCD_DATA L3D: Ret; Done TXT: .DB "Type in TTY cell (tx) ",0x0D; Must contain an even .DB ">",0x00; number of bytes per line ; Sends a control function to the display (comes in PARAM) LCD_CMD: Push PARAM Mov TEMP, PARAM Nop; pulse width Mov PARAM, TEMP; Data back Swap PARAM; Lower 4 bits Andi PARAM, 0xF0 Sbr PARAM, 8; OE high (bit 3, port D) Nop Nop Cbi PORTD,3; OE clock low Dec PARAM Brne DEL0 Pop PARAM Ret ; Sends an ASCII character to the display (comes in PARAM) LCD_DATA: Push PARAM Push TEMP Mov TEMP, PARAM Sbr PARAM, OE; OE bit high Nop; Brief delay Nop Swap TEMP; Lower 4 bits Sbr TEMP, OE; OE high Sbr TEMP, RS Nop Nop Ldi TEMP, 100 Mov DELAY, TEMP; 50 usec DEL1: Dec DELAY Brne DEL1 Pop TEMP Pop PARAM Ret ; Moves the LCD display cursor to address specified in PARAM LCD_CURSOR: Ret Содержание отчета
Отчет по проделанной лабораторной работе должен содержать: - структурную схему алгоритма программы на лабораторную работу; - схему электрическую принципиальную разработанного устройства; - текст программы на языке AVR Ассемблере (распечатка файла *asm); - распечатка файла проекта (*.prj); - результаты моделирования (окно VMLab с запущенной программой и результатами вычислений).
Контрольные вопросы
1. Структура микроконтроллера ATmega16. 2. Состав файла m16def.inc. 3. Регистры управления UART микроконтроллера ATmega16. 4. Порты ввода/вывода микроконтроллера ATmega16. 5. Порты ввода/вывода микроконтроллера ATmega16. 6. Подключение LCD модуля к микроконтроллеру AVR ATmega16. 7. Управление процессом вывода информации из AVR микроконтроллера ATmega16 в LCD модуль (дисплей). 8. Назначение и состав файла m16def.inc.
Лабораторная работа № 3 ПРОГРАММа управлениЯ таймер–счетчиком в режиме широтно–импульсной модуляции
Цель работы: Изучение проектирования таймера/счетчика в контроллере AVR на примере программы генерации синусоидального сигнала в режиме широтно–импульсной модуляции. Таймер/счетчик 0
Таймер-счетчик 0 – модуль многофункционального одноканального 8–разрядного таймера–счетчика. Функциональная схема таймера–счетчика представлена на рис. 19.
Описание регистров 8–разрядного таймера–счетчика 0
Регистр управления таймером–счетчиком 0 – TCCR0 В таблице 10 представлена структура регистра, режимы управления и начальные значения разрядов регистра TCCR0. Табл. 10. Регистр TCCR0
Разряд 7 – FOC0: Принудительная установка результата сравнения Строб FOC0 не генерирует каких–либо прерываний, а также не вызывает сброс таймера в режиме СТС, где регистр OCR0 задает верхний предел счета. Бит FOC0 всегда считывается как 0.
Разряд 6, 3 – WGM01:0: Режим работы таймера–счетчика 0 Данные биты представлены в таблице 11, определяют: алгоритм счета счетчика, источник, который задает верхний предел счета и тип генерируемых прямоугольных импульсов.
Таблица 11. Описание бит, задающих режим работы таймера–счетчика 0
Разряд 5:4 – COM01, COM00: Режим формирования выходного сигнала
Данные биты представлены в таблице 12, определяют алгоритм изменения сигнала на выводе OC0.
Таблица 12. Режимы формирования выходного сигнала в режимах работы таймера 0 без ШИМ
В таблице 13 приведено назначение бит COM01, COM00 для режима работы таймера–счетчика 0 с быстрой ШИМ (WGM01:0).
Таблица 13. Режимы формирования выходного сигнала в режиме таймера 0 с быстрым ШИМ(1)
В таблице 14 приведено действие бит COM01, COM00 для режима ШИМ с фазовой коррекцией, заданного с помощью бит WGM01, WGM00.
Таблица 14. Режимы выходного сигнала в режиме ШИМ с фазовой коррекцией(1)
Разряд 2:0 – CS02:0: Настройка частоты синхронизации таймера
С помощью трех настроечных бит имеется возможность выбрать различные тактовые частоты, кратные исходной частоте синхронизации (см. табл. 15).
Таблица 15. Выбор частоты синхронизации таймера 0
Регистр таймера–счетчика, разряды которого представлены в таблице 16, характеризуется двунаправленностью доступа к 8–разрядному счетчику таймера 0. Запись в регистр TCNT0 блокирует отработку возникающего совпадения на следующем после записи такте синхронизации таймера. Изменение содержимого счетчика (TCNT0) во время счета связано с риском потери результата сравнения между TCNT0 и регистром OCR0. Таблица 16. Регистр таймера–счетчика – TCNT0
Регистр порога сравнения, разряды которого представлены в таблице 17, содержит 8–разр. значение, которое непрерывно сравнивается цифровым компаратором со значением 8–разр. счетчика (TCNT0). Факт совпадения значений может использоваться для генерации прерывания по выполнению условия сравнения или для генерации прямоугольных импульсов на выводе OC0. Таблица 17. Регистр порога сравнения – OCR0
Таймер/счетчик 1 16–ти разрядный таймер–счетчик 1 предназначен для точного задания временных интервалов, генерации прямоугольных импульсов и измерения временных характеристик импульсных сигналов. На рисунках и в тексте описания индекс “n” заменяет номер таймера–счетчика, а “x” заменяет наименование канала сравнения (A, или B). Однако при программировании необходимо использовать фактические номера и наименования. В таблице 18 представлены разряды регистра А управления таймером–счетчиком 1 – TCCR1A. В таблице 19 приведены режимы управления сигналов OCnA/OCnB. В таблице 20 представлены разряды регистра В управления таймером–счетчиком 1 – TCCR1B.
Функциональная схема 16–разр. таймера–счетчика показана на рисунке 20. Рис. 20. Функциональная схема 16–разр. таймера–счетчика
Таблица 18. Регистр А управления таймером–счетчиком 1 – TCCR1A
Биты 7:6 – COM1A1:0 Режим формирования выходного сигнала канала A Биты 5:4 – COM1B1:0 Режим формирования выходного сигнала канала В
Таблица 19. Управление режимами сигналов OCnA/OCnB
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 516; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.242.39 (0.015 с.) |