Универсальный асинхронный приемопередатчик – UART
Цель работы.Изучение принципа работы UART порта. Получение навыков использования UART порта для приема/передачи данных. Разработка и отладка управляющих программ приема/передачи и программ обработки данных.
Краткие теоретические сведения
Последовательный порт UART используется, для организации обмена данными между несколькими устройствами в последовательном коде. По порту можно одновременно и передавать и получать данные. Для этого используются отдельные линии связи. Скорость приема-передачи можно изменять программно. Разрядность данных может быть 8 или 9 бит.
Управление портом производится с помощью регистров: UDR, UCSRnA, UCSRnB, UCSRnC , UBRRnL и UBRRnH (более подобно см. раздел 2.10)
Пример программирования UART порта.
Фрагменты программы, реализующие настройку порта, передачу и прием данных.
;------------------------------------------------------------
;Инициализация передатчика
ldi r16, 0x55
out UBRRl, $55 ;установка скорости передачи
ldi r16, (1<<RXEN)|(1<<TXEN) ;активация УСАПП
out UCSRB,r16
;установка формата кадра передачи: 8-data, 2-stop Бит
ldi r16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
out UCSRC,r16
ret
;------------------------------------------------------------
;Передачи данных
Transmit:
sbis UCSRA,UDRE ;ожидание готовности передачи
rjmp Transmit
out UDR,r16 ;поместить данные в буфер
ret
;------------------------------------------------------------
;Прием данных
Receive:
sbis UCSRA, RXC ;ожидания приёма данных
rjmp Receive
in r16, UDR ;получения принятых данных из буфера
ret
Индивидуальные задания к выполнению
Лабораторной работы №4
(прием и передачу осуществить по сигналу
«Запрос прерывания» и по опросу флажка готовности UART)
1. Разработать программу передачи 3-х байт данных, расположенных в ОЗУ. Передачу осуществлять в 8-ми битном режиме с минимальной скоростью.
2. Разработать программу приема 3-х байт данных. Прием осуществлять в 8-ми битном режиме с минимальной скоростью. Данные сохранить в ОЗУ.
3. Разработать программу передачи данных из порта В. Передачу осуществлять в 9-ти битном режиме с контролем по четности.
4. Разработать программу приема байта данных. Прием осуществлять в 9-ти битном режиме с максимальной скоростью. Данные выводить в PORTC.
5. Разработать программу передачи 10-ти байтов данных, расположенных в ОЗУ. Передачу осуществлять по сигналу внешнего прерывания INT0 в 8-ми битном режиме.
6. Разработать программу обмена данными двух УЛС по UART порту.
7. Разработать программу одновременного приема и передачи данных по UART порту.
8. Разработать программу передачи подпрограмм и запуска их на приемной стороне по окончании приема.
Контрольные вопросы к лабораторной работе №4
1. Назначение UART порта МК и его основные характеристики.
2. Формат регистра статуса UART-порта и назначение битов регистра. Привести пример использования регистра статуса UART порта.
3. Регистр управления UART-порта и назначение битов регистра. Привести пример использования регистра управления UART порта.
4. Назначение бод-генератор (Baud Rate Generator) UART порта и регистра бод-генератора UART- UBRR.
5. Назначение регистра данных UDR UART-порта.
6. Для чего проводится тестирование выборки битов принимаемых символов?
7. Формат кадра и его содержание. Назначение старт - и стоп-битов
8. Привести пример считывания содержимого регистра статуса UART-порта, записи данных в регистры: бод-генератора UART, управления и данных UART-порта.
9. Каким образом задается скорость приема/передачи данных.
10. Вектора прерываний UART-порта и их назначение. Привести пример организации приема/передачи в режиме прерывания.
11. Привести схему соединения приемника и передатчика по UART-порта.
12. Режимы работы UART-порта и их отличительные особенности.
13. Приведите временные диаграммы приема/передачи информации по UART-порту.
14. В чем различие между UART-портом МК и последовательным интерфейсом RS-232?
Лабораторная работа №5