В HTML      В PDF
микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > AVR

реклама

 
радиационно стойкие ПЗУ Миландр

Продажа силового и бронированного кабеля и провода в Москве




Arduino Uno R3 Atmega328
готовый модуль
Лучшая Цена 335 руб




Стартовый набор с большим набором аксесуаров
Arduino Uno R3 Atmega328
Лучшая Цена 2211 руб



21.15. Описание регистров

21.15.1. DATA - регистр ввода-вывода данных модуля USART

Бит 7 6 5 4 3 2 1 0  
+0x00
RXB[7:0]
TXB[7:0]
 
Чтение/запись Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап.
Начальное значение 0 0 0 0 0 0 0 0

Регистр буфера данных передатчика USART и регистр буфера данных приемника USART доступны по одному и тому же адресу - адресу регистра данных USART (DATA). Запись в регистр данных (DATA) фактически выполняется, как запись в регистр буфера данных передатчика (TXB). При чтении же регистра DATA фактически возвращается содержимое регистра буфера данных приемника (RXB). При работе с 5-, 6- или 7-битными данными, старшие неиспользуемые биты игнорируются передатчиком и обнуляются приемником.

Буфер передачи можно записать только тогда, когда флаг DREIF в регистре STATUS равен единице. Запись в DATA, когда флаг DREIF равен нулю, игнорируется передатчиком USART. Передатчик, при условии разрешения его работы, после записи данных в буфер передачи выполняет загрузку данных в сдвиговый регистр передатчика сразу после освобождения последнего. После этого, данные передаются по линии TxD.

Буфер приемника работает, как двухуровневый буфер FIFO. Состояние буфера FIFO и соответствующих флагов в регистре статуса (STATUS) изменяется при каждом чтении буфера приемника.

Опрос флагов статуса необходимо делать только перед чтением DATA, в противном случае они будут некорректными.

21.15.2. STATUS - регистр статуса USART

Бит 7 6 5 4 3 2 1 0  
+0x01
RXCIF TXCIF DREIF FERR BUFOVF PERR - RXB8
STATUS
Чтение/запись Чт. Чт./Зап. Чт. Чт. Чт. Чт. Чт. Чт./Зап.
Начальное значение 0 0 0 0 0 0 0 0
  • Бит 7 - RXCIF: флаг прерывания по завершению приема

Данный флаг становится равным единице, когда в приемном буфере имеются несчитанные данные, и нулю, если приемный буфер пуст (т.е. не содержит каких-либо несчитанных данных). После отключения приемника, приемный буфер опустошается, а флаг RXCIF становится равным нулю.

При управлении приемом данных по прерываниям, сброс флага RXCIF происходит при выполнении чтения принятых данных из регистра DATA в процедуре обработки прерывания по завершению приема. Если этого не сделать, сразу после выхода из текущего прерывания будет инициировано новое прерывание. Альтернативно, данный флаг можно сбросить записью в него единицы.

  • Бит 6 - TXCIF: флаг прерывания по завершению передачи

Данный флаг становится равным единице по завершению сдвига данных сдвиговым регистром передатчика при условии, что в буфере передатчика (DATA) нет новых данных для передачи. Флаг TXCIF автоматически сбрасывается при переходе на вектор прерывания по завершению передачи. Альтернативно, флаг можно сбросить записью в него единицы.

  • Бит 5 - DREIF: флаг прерывания по опустошению буфера данных

Флаг DREIF сигнализирует о готовности буфера передатчика (DATA) к записи новых данных. Флаг равен единице, когда буфер передачи пуст, и нулю, когда в буфере есть подлежащие передаче данные и они еще не были перемещены в сдвиговый регистр. Данный флаг становится равным единице после сброса МК, чтобы сигнализировать о готовности передатчика. Выполняя запись в регистр STATUS, всегда записывайте нуль в данный бит.

Флаг DREIF сбрасывается при записи в регистр DATA. При управлении передачей данных по прерываниям, в процедуре обработки прерывания по опустошению буфера данных необходимо, либо записать новые данные в регистр DATA для сброса флага DREIF, либо отключить прерывание по опустошению буфера. Если этого не сделать, сразу после выхода из текущего прерывания будет инициировано новое прерывание.

  • Бит 4 - FERR: флаг ошибки в посылке

Флаг FERR указывает на состояние первого стоп-бита той посылки, которая в данный момент может быть считана из приемного буфера. Флаг равен единице, если первый стоп-бит принят с нулевым (ошибочным) значением, и равен нулю, если принятый первый стоп-бит равен единице. Флаг остается действительным до момента чтения данных из приемного буфера (DATA). Флаг FERR никак не зависит от настройки бита SBMODE в регистре CTRLC, т.к. приемник игнорирует все стоп-биты, кроме первого. Выполняя запись в регистр STATUS, всегда записывайте нуль в данный бит.

В ведущем режиме SPI данный флаг не используется.

  • Бит 3 - BUFOVF: флаг переполнения буфера

Установка флага BUFOVF сигнализирует о потери данных вследствие заполнения буфера приемника. Установка данного флага происходит при обнаружении условия переполнения буфера. Такое условие возникает, когда буфер приемника заполнен (двумя символами данных), в сдвиговом регистре приемника ожидает чтения новый символ данных и обнаруживается новый старт-бит. Флаг остается действительным до выполнения чтения буфера приемника (DATA). При выполнении записи в регистр STATUS всегда записывайте нуль в данный бит.

В ведущем режиме SPI данный флаг не используется.

  • Бит 2 - PERR: ошибка паритета

Данный флаг принимает единичное значение, если разрешена проверка паритета и при приеме посылки, которая в данный момент может быть считана из приемного буфера, обнаружена ошибка паритета. Если проверка паритета отключена, флаг PERR будет всегда считываться с нулевым значением. Данный бит остается действительным до выполнения чтения буфера приемника (DATA). Выполняя запись в регистр STATUS, всегда записывайте нуль в данный бит. Более детально о вычислении паритета см. в 21.4.1 "Вычисление бита паритета".

В режиме ведущего SPI данный флаг не используется.

  • Бит 1 - Res: резервный бит

Данный бит является резервным и всегда считывается с нулевым значением. Для совместимости с более новыми МК, выполняя запись в этот регистр, всегда записывайте нуль в резервный бит.

  • Бит 0 - RXB8: Принятый бит 8

В бите RXB8 хранится значение девятого принятого бита данных при работе с 9-битными данными. Чтение данного бита необходимо выполнить перед чтением младших бит данных из регистра DATA.

В режиме ведущего SPI данный бит не используется.

21.15.3. CTRLA - регистр управления А модуля USART

Бит 7 6 5 4 3 2 1 0  
+0x03
- - RXCINTLVL[1:0] TXCINTLVL[1:0] DREINTLVL[1:0]
CTRLA
Чтение/запись Чт. Чт. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап.
Начальное значение 0 0 0 0 0 0 0 0
  • Биты 7:6 - Res: резервные биты

Данные биты не используются и зарезервированы для использования в будущем. Для совместимости с более новыми МК, выполняя запись в этот в регистр, всегда записывайте нули в резервные биты.

  • Биты 5:4 - RXCINTLVL[1:0]: уровень прерывания по завершению приема

Данные биты разрешают прерывание по завершению приема и задают его уровень в соответствии с описанием в разделе 12 "Прерывания и программируемый многоуровневый контроллер прерываний". Разрешенное прерывание генерируется в случае установки флага RXCIF в регистре STATUS.

  • Биты 3:2 - TXCINTLVL[1:0]: уровень прерывания по завершению передачи

Данные биты разрешают прерывание по завершению передачи и задают его уровень в соответствии с описанием в разделе 12 "Прерывания и программируемый многоуровневый контроллер прерываний". Разрешенное прерывание генерируется в случае установки флага TXCIF в регистре STATUS.

  • Биты 1:0 - DREINTLVL[1:0]: уровень прерывания по опустошению буфера данных

Данные биты разрешают прерывание по опустошению буфера и задают его уровень в соответствии с описанием в разделе 12 "Прерывания и программируемый многоуровневый контроллер прерываний". Разрешенное прерывание генерируется в случае установки флага DREIF в регистре STATUS.

21.15.4 CTRLB - регистр управления В модуля USART

Бит 7 6 5 4 3 2 1 0  
+0x04
- - - RXEN TXEN CLK2X MPCM TXB8
CTRLB
Чтение/запись Чт. Чт. Чт. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап.
Начальное значение 0 0 0 0 0 0 0 0
  • Биты 7:5 - Res: резервные биты

Данные биты не используются и зарезервированы для использования в будущем. Для совместимости с более новыми МК, выполняя запись в этот регистр, всегда записывайте нули в резервные биты.

  • Бит 4 - RXEN: разрешение работы приемника

Запись единицы в данный бит разрешает работу приемника USART. После разрешения работы, приемник перекрывает нормальную работу порта на линии RxD. Отключение приемника приводит к опустошению приемного буфера и делает недействительными флаги FERR, BUFOVF и PERR.

  • Бит 3 - TXEN: разрешение работы передатчика

Запись единицы в данный бит разрешает работу передатчика USART. После разрешения работы, передатчик перекрывает нормальную работу порта на линии TxD. Отключение передатчика (запись нуля в бит TXEN) вступит в силу только тогда, когда завершатся выполняющаяся и подготовленная передачи, т.е. когда в сдвиговом регистре передатчика и буферном регистре передатчика не окажется данных для передачи. После отключения, передатчик более не перекрывает линию TxD порта ввода-вывода.

  • Бит 2 - CLK2X: разрешение удвоенной скорости

Запись единицы в данный бит снижает коэффициент деления скорости с 16 до 8, что приводит к удвоению скорости в асинхронных режимах работы. В синхронном режиме данный бит не оказывает никакого влияния и в него всегда необходимо записывать нулевое значение. Данный бит также должен быть равен нулю при работе в асинхронном режиме совместно с модулем IRCOM.

Данный бит не используется в режиме ведущего SPI.

  • Бит 1 - MPCM: режим мультипроцессорной связи

С помощью данного бита можно активизировать режим мультипроцессорной связи. Если в бит MPCM записать единицу, приемник USART будет игнорировать все входящие посылки, которые не содержат информацию об адресе. Настройка бита MPCM не влияет на работу передатчика. Более детально о работе в этом режиме см. в разделе 21.12.1 "Режим мультипроцессорной связи".

В режиме ведущего SPI данный бит не используется.

  • Бит 0 - TXB8: Бит 8 передаваемых данных

В бит TXB8 необходимо записать девятый бит передаваемых данных при работе с 9-битными данными. Запись данного бита необходимо выполнить перед записью младших бит данных в регистр DATA.

В режиме ведущего SPI данный бит не используется.

21.15.5. CTRLC - регистр управления С модуля USART

Бит 7 6 5 4 3 2 1 0  
+0x05
+0x05(1)
CMODE[1:0] PMODE[1:0] SBMODE CHSIZE[2:0]
CMODE[1:0] - - - UDORD UCPHA -
 
Чтение/запись Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап.
Начальное значение 0 0 0 0 0 1 1 0

Прим.: 1. Для ведущего режима SPI.

  • Биты 7:6 - CMODE[1:0]: режим работы USART

От данных бит зависит режим работы USART (см. таблицу 21.6).

Таблица 21.6. Настройка бит CMODE

CMODE[1:0] Групповая конфигурация Режим
00 ASYNCHRONOUS Асинхронный USART
01 SYNCHRONOUS Cинхронный USART
10 IRCOM IRCOM(1)
11 MSPI Ведущий SPI
  1. Полное описание использования режима IRCOM см. в разделе 22 "Модуль инфракрасной связи IRCOM".
  • Биты 5:4 - PMODE[1:0]: режим паритета

С помощью данных бит можно разрешить генерацию паритета и выбрать его тип в соответствии с таблицей 21.7. После разрешения генерации паритета, передатчик автоматически генерирует и передает бит паритета вместе с битами данных каждой посылки. В свою очередь, приемник, с учетом настройки PMODE, вычисляет бит паритета для принятых данных и сравнивает его с принятым значением бита паритета. Если обнаруживается несовпадение, устанавливается флаг PERR в регистре STATUS.

Данные биты не используются в режиме ведущего SPI.

Таблица 21.7. Настройка бит PMODE

PMODE[1:0] Групповая конфигурация Режим паритета
00 DISABLED Отключен
01   (резерв)
10 EVEN Разрешен четный паритет
11 ODD Разрешен нечетный паритет
  • Бит 3 - SBMODE: режим стоп-бита

Данный бит задает количество генерируемых передатчиком стоп-бит в соответствии с таблицей 21.8. Приемник данную настройку игнорирует.

В режиме ведущего SPI данный бит не используется.

Таблица 21.8. Настройка бит SBMODE

SBMODE Стоп-бит(ы)
0 1 бит
1 2 бита
  • Биты 2:0 - CHSIZE[2:0]: размер данных

Биты CHSIZE[2:0] задают количество бит данных в посылке в соответствии с таблицей 21.9. Данная настройка распространяется как на приемник, так и на передатчик.

Таблица 21.9. Настройка бит CHSIZE

CHSIZE[2:0] Групповая конфигурация Размер данных
000 5BIT 5 бит
001 6BIT 6 бит
010 7BIT 7 бит
011 8BIT 8 бит
100   (резерв)
101   (резерв)
110   (резерв)
111 9BIT 9 бит
  • Бит 2 - UDORD: очередность передачи бит данных

От данного бита зависит очередность передачи бит данных. Если он равен единице, то первым будет передаваться младший бит данных. Если же он равен нулю, то первым будет передаваться старший бит данных. Данная настройка распространяется и на приемник и на передатчик. Изменение UDORD приводит к нарушению выполняющейся передачи или выполняющегося приема.

  • Бит 1 - UCPHA: фаза синхронизации

От значения бита UCPHA зависит, по какому фронту XCKn, переднему (первому) или заднему (последнему), производится выборка данных. См. 21.3.5 "Генерация синхронизации для шины SPI".

21.15.6. BAUDCTRLA - регистр скорости USART

Бит 7 6 5 4 3 2 1 0  
+0x06
BSEL[7:0]
BAUDCTRLA
Чтение/запись Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап.
Начальное значение 0 0 0 0 0 0 0 0
  • Биты 7:0 - BSEL[7:0]: регистр скорости USART

В этом регистре хранится младший байт 12-битного значения настройки скорости USART. Четыре старших бита этого значения хранятся в регистре BAUDCTRLB. Изменение настройки скорости во время выполняющейся передачи передатчиком и приемником приведет к нарушению этой передачи. Обновление настройки предделителя генератора скорости происходит сразу после записи регистра BAUDCTRLA.

21.15.7 BAUDCTRLB - регистр скорости USART

Бит 7 6 5 4 3 2 1 0  
+0x07
BSCALE[3:0] BSEL[11:8]
BAUDCTRLB
Чтение/запись Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап. Чт./Зап.
Начальное значение 0 0 0 0 0 0 0 0
  • Биты 7:4 - BSCALE[3:0]: коэффициент масштабирования скорости USART

С помощью данных бит можно задать коэффициент масштабирования скорости. Его значение задается в двоичном дополнительном коде от -7 (0b1001) до 7 (0b0111). Настройка -8 (0b1000) является резервной. Положительные значения коэффициента масштабированию приводят к делению частоты генератора скорости с коэффициентом 2BSCALE. Задание отрицательных значений коэффициента инициирует дробный счет в генераторе скорости, что приводит к увеличению разрешающей способности. См. выражения в таблице 21.1.

  • Биты 3:0 - BSEL[11:8]: регистр скорости USART

В данных битах хранится четыре старших бита 12-битного значения настройки скорости USART. Младший байт этого значения хранится в регистре BAUDCTRLA. Изменение настройки скорости во время выполняющейся передачи передатчиком и приемником приведет к нарушению этой передачи. Обновление настройки предделителя генератора скорости происходит сразу после записи регистра BAUDCTRLA.

21.16. Обзор регистров

21.16.1. Описание регистров модуля USART

Адрес Наименование Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
+0x00 DATA DATA[7:0]
+0x01 STATUS RXCIF TXCIF DREIF FERR BUFOVF PERR - RXB8
+0x02 (резерв) - - - - - - -
+0x03 CTRLA - - RXCINTLVL[1:0] TXCINTLVL[1:0] DREINTLVL[1:0]
+0x04 CTRLB - - - RXEN TXEN CLK2X MPCM TXB8
+0x05 CTRLC CMODE[1:0] PMODE[1:0] SBMODE CHSIZE[2:0]
+0x06 BAUDCTRLA BSEL[7:0]
+0x07 BAUDCTRLB BSCALE[3:0] BSEL[11:8]

21.16.1. Описание регистров модуля USART, работающего в режиме ведущего интерфейса SPI

Адрес Наименование Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
+0x00 DATA DATA[7:0]
+0x01 STATUS RXCIF TXCIF DREIF - - - - -
+0x02 (резерв) - - - - - - - -
+0x03 CTRLA - - RXCINTLVL[1:0] TXCINTLVL[1:0] DREINTLVL[1:0]
+0x04 CTRLB - - - RXEN TXEN - - -
+0x05 CTRLC CMODE[1:0] - - - UDORD UCPH -
+0x06 BAUDCTRLA BSEL[7:0]
+0x07 BAUDCTRLB BSCALE[3:0] BSEL[11:8]

21.17. Обзор векторов прерываний

Таблица 21.10. Векторы прерываний модуля USART и значения смещений их адресов

Смещение Источник Описание прерывания
0x00 RXC_vect Вектор прерывания по завершению приема USART
0x02 DRE_vect Вектор прерывания по опустошению регистра данных USART
0x04 TXC_vect Вектор прерывания по завершению передачи USART


<-- Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (495) 514 4110. e-mail:info@eust.ru
©1998-2016 ООО Рынок Микроэлектроники