Микроконтроллеры для систем автоматики - часть 22

 

  Главная      Учебники - Производство     

 

поиск по сайту           правообладателям

 

 

 

 

 

 

 

 

 

содержание   ..  20  21  22  23   ..

 

 

Микроконтроллеры для систем автоматики - часть 22

 

 

 

87 

Таблица 12.9.  

Режимы PWM таймера/счетчика 2 

CTC2 COM21 COM20 Эффект при сравнении 

Частота 

0 0  0 

Нет соединения 

 

0 0  1 

Нет соединения 

 

1 0 

Установка 0 при сравнении в режиме 
сложения; установка 1 при сравнении в 
режиме вычитания  

510

/

TCK

f

 

Установка 1 при сравнении в режиме 
сложения; установка 0 при сравнении в 
режиме вычитания (инверсная PWM) 

510

/

TCK

f

 

1 0  0 

Нет соединения 

 

1 0  1 

Нет соединения 

 

1 0 

Установка 0 при сравнении, установка 
1 при переполнении 

 

256

/

TCK

f

 

Установка 1 при сравнении, установка 
0 при переполнении 

256

/

TCK

f

 

Когда регистр OCR1 содержит $0 или TOP, вывод OC1A/OC1B остается на низком 

уровне, соответственно установкам COM21/COM20. Это отображено в таблице 12.10. 

Таблица 12.10.  

Состояния выходов в режиме PWM при OCR2 = $00 или $FF 

COM21 COM20 OCR2 Состояние выводов OC2 

1 0 

$00 

1 0 

$FF 

1 $00 

1 $FF 

В  реверсивном  режиме PWM флаг  переполнения TOV2 устанавливается,  когда 

таймер/счетчик  переходит  в  режим  вычитания.  В  режиме  работы  с  переполнением,  он 
устанавливается  при  переполнении,  как  обычный  таймер/счетчик.  Прерывание TOV2 
работает, если установлен бит I глобального разрешения прерывания в регистре статуса 
SREG. 

13. ПОСЛЕДОВАТЕЛЬНЫЙ ВВОД-ВЫВОД 

13.1. Интерфейс UART 

Асинхронный последовательный интерфейс UART (Universal Asynchronous Receiver 

Transmitter – универсальный 

асинхронный 

приемопередатчик) 

обеспечивает 

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

В  режиме  асинхронной  передачи  каждое  слово  данных  передается  автономно  и 

передача может быть начата в любой момент времени. Стандартный формат асинхронной 
передачи изображен на рис. 13.1. 

 

88 

 

Рис. 13.1. Формат асинхронной передачи 

Передача начинается со стартового (нулевого) бита. Затем передается от 5 до 8 

бит  данных.  Передача  заканчивается  необязательным  битом  четного  (или  нечетного) 
паритета  и  одним  (полутора  или  двумя)  единичными  стоповыми  битами.  После  этого  в 
любой момент времени может быть начат цикл передачи следующего слова.  

Подразумевается,  что  приемник  и  передатчик  работают  на  одной  скорости, 

измеряемой числом бит в секунду (бод). Внутренний генератор синхронизации приемника 
запускается  при  обнаружении  стартового  бита.  В  идеальном  случае  эти  импульсы 
располагаются в середине битовых интервалов.  

Формат асинхронной передачи позволяет выявлять возможные ошибки: 

º 

если  обнаружен  стартовый  бит  и  генератор  синхронизации  запущен,  а  по 
первому импульсу синхронизации фиксируется уровень логической единице, 
стартовый бит считается ложным; 

º 

если  по  импульсам  синхронизации,  соответствующим  стоп-битам,  в 
приемнике фиксируется логический нуль, сообщение считается ошибочным 
(ошибка кадра); 

º 

если контрольный бит не соответствует принятому соглашению о паритете, 
фиксируется ошибка паритета. 

Контроль формата позволяет обнаружить обрыв линии по отсутствию стоп-бита. 
Для асинхронной передачи принят стандартный ряд скоростей: 50, 75, 110,150, 300, 

600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с.: 

В  простейшем  случае  асинхронный  приемопередатчик  имеет  две  сигнальные 

линии: 

º TxD 

(Transmit Data)- выход, 

º RxD (Receive Data) – вход, 

При  этом  два  устройства-приемопередатчика  должны  быть  соединены  между 

собой тремя линями, или так называемым нуль-модемным кабелем (рис.13.2). 

 

Рис. 13.2. Нуль-модемный кабель 

У

П Р А В Л Е Н И Е  

U A R T  

Управление UART осуществляется  через регистры ввода/вывода. В контроллере 

ATmega163 для управления используется 5 регистров (рис. 13.3): 

º 

Регистр UDR (UART Data Register) – регистр данных UART 

º 

Регистр UСSRА (UART Control and Status Register A) -регистр А управления и 
статуса UART 

 

89 

º 

Регистр UCSRB (UART Control and Status Register B) - регистр В управления 
и статуса UART 

º 

Регистры UBRRH1 и UBRR (UART Baud Rate registers) – регистры скорости 
передачи.  

 

  7 

1 0 

UDR 

$0C ($2C)  MSB 

  

  

  

  

  

  

LSB 

UCSRA $0B 

($2B)  RXC  TXC  UDRE  FE  OR 

-  U2X- MPCR- 

UCSRB $0A ($2A) RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8  TXB8 

UBRRH1 

$20 

($40) -  -  -  - MSB .  .  LSB 

UBRR  $09 ($29)  MSB 

.  

LSB 

Рис.13.3. Регистры UART 

Регистр данных UDR (UART Data Register) физически является двумя регистрами:  

регистром  передачи  данных  и  регистром  приема  данных,  использующими  одни  и  те  же 
адреса $0C ($2C). При записи в регистр запись производится в регистр передачи данных 
UART, при чтении происходит чтение содержимого регистра приема данных UART. 

Скорость обмена данными в UART задается с помощью бод-генератора (Baud Rate 

Generator).  Он  представляет  собой  делитель,  генерирующий  импульсы  синхронизации  с 

частотой, определяемой выражением: 

)

1

(

16

+

=

UBRR

СК

BAUD

, где  

º BAUD 

частота в бодах (бит/сек), 

º CK 

частота кварцевого генератора,  

º UBRR 

содержимое 12-битного регистра UBRR (UART Baud Rate register).  

Физически  12-битный  регистр UBRR размещается  в  двух 8-битных  регистрах. 

Младшие 8 бит в регистре UBRR, старшие 4 бита – в регистре UBRRH1 (рис. 13.3). 

При  использовании  стандартных  кварцевых  резонаторов,  наиболее  часто 

используемые  скорости  передачи  в  бодах  могут  быть  получены  установками UBRR, 
представленными в таблице 13.1. При установках UBRR, указанных в таблице, реальные 
скорости в бодах будут иметь отличия менее 2% от стандартных скоростей. 

Таблица 13.1.  

Установки UBRR при стандартных частотах синхронизации 

UBRR 

Скорость 

(бод) 

1 MHz 

Ошибка 

2 MHz 

Ошибка 

4 MHz 

Ошибка 

8 MHz 

Ошибка 

2400  

25  0,2   

51 0,2 103 0,2 207 0,2 

4800  

12 0,2  

25 0,2  51 0,2 103 0,2 

9600 

 6 

7,5 

 12 0,2 25 0,2 51 0,2 

14400 

 3 

7,8 

 8 

3,7 

16 2,1 34 0,8 

19200 

 2 

7,8 

 6 

7,5 

12 0,2 25 0,2 

28800 

 1 

7,8 

 3 

7,8 

3,7 

16 2,1 

 

90 

UBRR 

Скорость 

(бод) 

1 MHz 

Ошибка 

2 MHz 

Ошибка 

4 MHz 

Ошибка 

8 MHz 

Ошибка 

38400 

 1 

22,9 

 2 

7,8 

7,5 

12 0,2 

Фактически, для регулирования скорости передачи UART достаточно только одного 

регистра UDDR. В  регистр UDDRH1  во  всех  рассмотренных  случаях  записывается 
константа $00. 

П

Е Р Е Д А Т Ч И К

 

Блок-схема передатчика UART показана на рис. 13.3. 

 

Рис. 13.3. Передатчик UART 

Установленный  в  состояние  1  бит TXEN регистра UCSRB разрешает  передачу 

данных UART. Передача инициируется записью передаваемых данных в регистр данных 
UDR. Данные пересылаются из UDR в сдвиговый регистр передачи в следующих случаях: 

º 

Новый  символ  записан  в UDR после  того  как  был  выведен  из  регистра 
стоповый бит предшествовавшего символа. Сдвиговый регистр загружается 
немедленно.  

º 

Новый  символ  записан  в UDR прежде,  чем  был  выведен  стоповый  бит 
предшествовавшего символа. Сдвиговый регистр загружается после выхода 
стопового  бита  передаваемого  символа,  находившегося  в  сдвиговом 
регистре.  

Если  из  10(11)-разрядного  сдвигового  регистра  передачи  выведена  вся 

информация (сдвиговый регистр передачи пуст) данные из UDR пересылаются в сдвиговый 
регистр.  В  это  время  устанавливается  бит UDRE (UART Data Register Empty)  регистра 
статуса USR (UART Status Register).  При  установленном  в  состояние  1  бите UDRE 
приемопередатчик готов принять следующий символ. Запись в UDR очищает бит UDRE. В 
то  самое  время,  когда  данные  пересылаются  из UDR в  10(11)-разрядный  сдвиговый 
регистр, бит 0 сдвигового регистра сбрасывается в состояние 0 (состояние 0 - стартовый 
бит) а бит 9 или 10 устанавливается в состояние 1 (состояние 1 - стоповый бит). Если в 
регистре управления UCSRB установлен бит CHR9 (т.е. выбран режим 9-разрядного слова 
данных), то бит TXB8 регистра UCSRB пересылается в бит 9 сдвигового регистра передачи. 

Сразу  после  пересылки  данных  в  сдвиговый  регистр  тактом  бод-генератора 

стартовый бит сдвигается на вывод TxD. За ним следует LSB данных. Когда будет выдан 
стоповый  бит  сдвиговый  регистр  загружается  новой  порцией  данных,  если  она  была 
записана  в UDR во  время  передачи.  В  процессе  загрузки  бит UDRE находится  в 
установленном состоянии. Если же новые данные не будут загружены в UDR до выдачи 
стопового  бита,  флаг UDRE остается  установленным.  В  этом  случае,  после  того  как 
стоповый  бит  будет  присутствовать  на  выводе TxD в  течение  одного  такта,  в  регистре 

 

 

 

 

 

 

 

содержание   ..  20  21  22  23   ..