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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!