Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Микроконтроллеры PIC фирмы Microchip для начинающих выпуск №21


РАССЫЛКА Микроконтроллеры PIC фирмы Microchip для начинающих
Ведущий: Алексей (pont_a@mail.ru)


Доброго времени суток, дамы и господа!!

Итак, разбираем периферийные модули микроконтроллеров серии PIC18 на примере микроконтроллера PIC18F452. Сегодня продолжаем изучать периферийный модуль USART! Будем рассматривать назначение регистров и битов управления им!

Открываем в datasheet пункт 16.0. В нем описаны эти регистры.

  • Первый регистр – TXSTA. Он управляет передатчиком периферийного модуля USART.

Назначение битов данного регистра следующее:

№ бита

Название

Описание

7

CSRC

Данный бит используется только в синхронном режиме. В асинхронном режиме данный бит игнорируется.
1 – режим master.
0 – режим slave.  

6

TX9

Бит выбирает формат передаваемых данных:
1 – передача в 9-ти битном режиме.
0 – передача в 8-ми битном режиме.

5

TXEN

1 – передатчик включен
0 – передатчик выключен
Если модуль используется в синхронном режиме, то при одновременном включении приема и передачи приоритет выше у приемника, поэтому передатчик не будет работать.

4

SYNC

Выбор режима работы:
1 – синхронный режим
0 – асинхронный режим

3

Не используется

2

BRGH

Используется только в асинхронном режиме.
1 – высокоскоростной режим
0 – низкоскоростной режим

1

TRMT

Бит, по которому можно определить пустой или нет сдвиговый регистр на передачу.
1 – сдвиговый регистр (TSR)  пустой
0 – сдвиговый регистр занят (еще идет передача)

0

TX9D

9-ый бит на передачу. После записи в буфер передатчика очередного байта, этот бит передастся с этим байтом, если включен 9-ти битный режим.

  • Второй регистр – RCSTA. Он управляет приемником периферийного модуля USART.

Назначение битов данного регистра следующее:

№ бита

Название

Описание

7

SPEN

1 – USART модуль включен. Пины настраиваются, как пины периферийного модуля USART
0 – USART модуль выключен. Пины можно использовать, как обычные входы/выходы.

6

RX9

Бит выбирает формат принимаемых данных:
1 – прием в 9-ти битном режиме.
0 – прием в 8-ми битном режиме.

5

SREN

Данный бит используется только в синхронном режиме master  периферийного модуля USART. В асинхронном режиме и в режиме синхронный slave данный бит игнорируется.
1 – разрешить одиночный прием (после приема одного байта бит автоматически сбрасывается)
0 – запретить одиночный прием

4

CREN

Бит разрешения постоянного приема
В асинхронном режиме:
1 – включить приемник на постоянную работу
0 – выключить приемник
В синхронном режиме:
1 – включить постоянный прием (имеет приоритет выше, чем у SREN)
0 – выключить постоянный прием. Разрешается только одиночный прием, который управляется битом SREN

3

ADDEN

Бит управления режимом детектирования адреса. Этот режим нужен для разгрузки микроконтроллера от обработки принимаемых байтов, не предназначавшихся ему. Если режим включен, то прерывание от приемника произойдет только в том случае, когда, принятый 9-ый бит будет равен единице.
1 – включить детектирование адреса
0 – выключить режим. После любого приема байта будет вызываться прерывание.

2

FERR

Бит, сигнализирующий о неверном фрейме принятого байта. Обычно, ошибка, когда стоповый бит не равен единице.
1 – принятый байт неверен (сбрасывается аппаратно только после чтения ошибочного байта из регистра RCREG и приема нового байта без ошибок фрейма)
0 – принятый байт корректен

1

OERR

Бит, сигнализирующий о переполнении буфера приемника. Такое происходит, когда принятый байт еще не прочтен программой из USART, а пришел уже еще один байт. Сбрасывается бит аппаратно только после отключения приемника (CREN=0).
1 – было переполнение USART
0 – переполнения не было

0

RX9D

Принятый 9-ый бит

 

  • Третий регистр – TXREG. Данный регистр представляет собой буфер передатчика. Чтобы передать какой либо байт, надо этот байт записать в данный регистр. Далее, байт, аппаратно, из этого регистра передается в сдвиговый регистр TSR, если он свободен. Если сдвиговый регистр занят, то байт хранится в регистре TXREG, пока не освободиться регистр TSR. Из сдвигового регистра  байт передается в линию. Регистр TSR не доступен программе. После того, как байт из регистра TXREG передастся в регистр TSR, произойдет прерывание от передатчика (если оно разрешено), которое нам просигнализирует, что регистр TXREG пуст, и в него можно писать новые данные.
  • Четвертый регистр – RCREG.  Данный регистр представляет собой буфер приемника. Байт принимается последовательно из линии в программнонедоступный регистр RSR.  После приема последнего стопового бита, принятый байт аппаратно переписывается из регистра RSR в регистр RCREG и выставляются биты ошибок в регистре RCSTA, если они есть. После аппаратной записи в регистр RCREG  произойдет прерывание (если оно разрешено), которое нам сигнализирует о том, что можно из регистра RCREG читать новые принятые данные.  
  • Пятый регистр – SPBRG. Данный регистр предназначен для задания скорости работы модуля USART. В данный регистр загружается константа, которая вычисляется по следующим формулам:

Режим

BRGH=0 (низкая скорость)

BRGH=1 (высокая скорость)

Асинхронный

Baud Rate = Fosc/(64(X+1))

Baud Rate = Fosc/(16(X+1))

Синхронный

Baud Rate = Fosc/(4(X+1))

Не используется

 Где, Baud Rate - необходимая скорость, а Х - константа, которая загружается в регистр SPBRG.
После вычисления по формуле выбирается наиболее близкое целое значение X и загружается в регистр SPBRG. Пример вычисления Вы можете найти в datasheet на микроконтроллер или дождаться следующего выпуска рассылки, где будут, также, примеры вычисления значения для регистра SPBRG.

В следующем выпуске я приведу ряд программных примеров, осуществляющих настройку периферийного модуля USART и работу с ним!

Полный архив рассылки Вы можете прочитать на нашем сайте!  При любом опубликовании текстов данной рассылки ссылка на сайт http://www.2aplusa.ru обязательна!

Желаю Вам удачи! До скорой встречи!


С уважением, Алексей pont_a@mail.ru
Cайт разработчиков 2AplusA http://2aplusa.ru


В избранное