UCSR С ( USART Control and Status Register ) регистр контроля С
7 бит URSEL ( Register Select ) -бит выбора между регистрами UCSRC (1) и UBRRH (0).
6 бит UMSEL ( Mode Select ) –Синхронная (1) и асинхронная (0) передача.
5,4 биты UPM 1, UPM 0 ( Parity Mode )- контроль чётности передаваемых данных.
UPM1 | UPM0 | Режим чётности |
0 | 0 | Проверка отключена |
0 | 1 | Зарезервировано |
1 | 0 | Включено; чётность |
1 | 1 | Включено; нечётность |
3 бит USBS ( Stop Bit Select )- число стоп-битов: (1) два стоп-бита, (0) один стоп-бит.
2,1 биты UCSZ 1, UCSZ 0 ( Character Size )- в совокупности с UCSZ2 из регистра UCSRB выбирает число передаваемых бит.
UCSZ2 | UCSZ1 | UCSZ0 | Число передаваемых бит |
0 | 0 | 0 | 5 |
0 | 0 | 1 | 6 |
0 | 1 | 0 | 7 |
0 | 1 | 1 | 8 |
1 | 0 | 0 | Резерв |
1 | 0 | 1 | Резерв |
1 | 1 | 0 | Резерв |
1 | 1 | 1 | 9 |
0 бит UCPOL ( Clock Polarity )- настраиваемый режим при синхронной работе; (0) при асинхронной работе
Бит UCPOL | Изменение данных при передаче | Изменение данных при приеме |
0 | Передний фронт | Задний фронт |
1 | Задний фронт | Передний фронт |
UBRRL,UBRRH (USART Baud Rate Registers)
Эти регистры отвечают за скорость работы приемо-передатчика последовательного интерфейса.
15 бит URSEL ( Register Select )- (0)-при работе с UBRRH, (1) при обращении к UCSRC.
Формула расчёта целочисленного коэффициента UBRR для определенной частоты:
,
где Fosc- частота кварца, или частотно-задающего контура
B- необходимая скорость работы
Например: рассчитать параметр для работы на частота 9600 бит/сек при опорном генераторе 8МГц.
|
|
; UBRR=51
Выполнение работы:
Подготовка файлов проекта.
1.1 Создать новый проект в среде разработки WinAVR, подготовить необходимые для работы файлы: Makefile для платы C51, ранее созданные библиотеки для работы с ЖК экраном, кнопками.
1.2 Создать заготовочный файл uart.h, в котором будут описаны функции работы с последовательным протоколом:
1.3 Функция, реализующая необходимые настройки для инициализации UART модуля:
Обратить внимание на регистр UBRR .
1.4 Функция отправки 8 бит в UART
1.5 Функция отправки строки в UART
1.6 Для отправки массива применяется функция UART_Send_Arr()
,
Ход работы микропроцессорной системы может зависеть от управляющей машины. Постоянно «прослушивать» состояние линии RX процессором – тратить лишние такты: неизвестно когда нужная команда может прийти. Оптимальным вариантом является применение аппаратного прерывания по чтению.
1.7 Функция описания прерывания по окончанию приема
В зависимости от программы компилятора имя прерывания (USART_RXC_vect) может отличаться. Для каждого процессора можно посмотреть таблицу векторов прерываний в спецификациях. А в файлах включений (io.h) узнать указатель-имя на выше обозначенный вектор.
rData - байтовая переменная для хранения последнего прочитанного значения регистра данных.
|
|
buffer[LEN] - массив хранения принятых данных, где LEN-константа, размер массива
IDX - указатель на элемент массива.
1.8 В файл global.h добавить переменные.
1.9 Основной файл программы имеет вид:
1.10 По аналогии с лабораторной работой №3 добавить триггер (переменную режима), который использовать как индикатор окончания посылки по UART. Когда переменная принимает значение 1, вывести содержимое буфера обратно в последовательный протокол и на экран.
Как только все байты буфера будут заняты, триггер режима принимает значение 1.
По этому индикатору вывести на экран сообщение и отправить содержимое буфера обратно- в приёмник USART.
Основная функция программы main проверяет триггер и выполняет набор действий. Затем триггер переводится в состояние 0.
Дата добавления: 2019-01-14; просмотров: 240; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!