Гребнев В.В. - Микроконтроллеры семейства AVR фирмы Atmel (1044208), страница 10
Текст из файла (страница 10)
Во втором случае ведущее устройство формирует посылку ЯТ и выдает новый адресный байт. В третьем случае ведущее устройство формирует посылку конца обмена (5~ор, ЯР), которая представляется переходом и т Робота периферийных устройств 53 цгнала в линии ИВА от низкого уровня к высокому при высоком уровне сигнала в линии БС1.. На рис.
3.7 изображены временные диаграммы сигналов в линиях ЯЭА и БС1. при начале обмена (а), при завершении передачи адресного байта (б), при начале передачи байта данных (в) и при завершении обмена (г). ! ! 50А ! А6 А5 5й, ! !5Т б/ ФАС !77 !76 ! ! 5П Рис.
3.7 Все ведомые устройства при обнаружении в шине посылки 5Т принимают адресный байт и сравнивают полученный адрес с собственным адресом, который хранится в одном из регистров порта, При совпадении адресов формируется посылка АСК и устройство переводится в режим ожидания очередной серии из девяти импульсов для приема или передачи байта данных в зависимости от значения бита Ж/К в принятом адресном байте. Все перечисленные операции в ведомом устройстве выполняются аппаратно.
Порт Т%51 у микроконтроллера типа т163 содержит 5 регистров ввода-вывода: ° регистр данных ТЮБЕ (№ $03); ° регистр адреса ТАЧАЯ (№ $02); ° регистр состояния ТЮБЕ (№ $01); ° регистр задания скорости передачи ТЖВК (№ $00); ° регистр управления Т'йтСВ, (№ $3б). Структурная схема порта ТЪ'51 изображена на рис.
3.8. Порт переводится в активное состояние при установке в единичное состояние разряда ТИЕТА регистра ТАСЯ.. При атом выводы порта ЯС1 и ЯЭА подключаются к внешним выводам микроконтроллера РСО и РС1 соответственно. Глава 3 Рис. 3.8 Порт начинает работать в качестве ведущего после установки в единичное состояние разряда ТЖЯТЛ регистра ИСК. При работе в качестве ведущего генератор С формирует импульсный сигнал, который через буферную схему 1/ОС1 выдается в линию ЯС1.. Скорость передачи битов определяется числом, код которого записан в регистре ТЮВК. Положение фронтов импульсов в импульсном сигнале связано с выполнением определенных операций в порте и может изменяться в некоторых пределах.
Осредненное значение скорости передачи ВК, бит/с, определяется по формуле ВК = иск 16+ 2(ТЖВК) + г ~иск где Гск — тактовая частота микроконтроллера; (ТЖВК) — число, код которого записан в регистр ТЖВК ((ТЖВК)>7); ~л — показатель, учитывающий растяжение некоторых интервалов между фронтами импульсов (гл - 200 — 600 нс). Работа аериферийных устройств При работе порта в качестве ведомого порядок его работы определяется импульсной последовательностью, которая через вывод ЯС1. и буферную схему 1/ОС1. поступает в схему управления СУ. Регистр ТЪЛЖ имеет цепи для сдвига кода влево. В него параллельно записываются байты, предназначенные для последовательного вывода в линию ЯЭА через буферную схему 1/ОРА, и последовательно вводятся оайты, поступающие из линии ЯЭА через буферную схему 1/ОРА. Импульсы сдвига поступают из схемы управления.
Регистр ТИАК используется только при работе порта в качестве ведомого. Код, записанный в старших семи его разрядах, представляет собственный адрес микроконтроллера (А6, ..., АО), Этот код сравнивается с помощью схемы сравнения СС с кодом в старших семи битах адресного оайта, принятого в регистр ТИРЫ. Младший разряд ТИССЕ регистра ТИАК разрешает прием байтов данных (при ТИССЕ = 1) после получения адресного байта с адресом общего вызова для всех ведомых микроконтроллеров ($00). Регистр ТИСЫ содержит разряды, определяющие работу схемы управления, (ТИЕА, ТИБЕТА, ТИНТО и ТИЕТА), отражающие состояние порта (ТИ1ХТ и ТИИС) и разряд ТИ1Е, разрешающий поступление запроса прерывания из порта в блок прерываний.
Запрос прерывания ТИЯ1 поступает в блок прерываний при ТЪЧ1МТ = 1 и ТИ1Е - 1. Код, формируемый в регистре ТИЖ, отражает состояние порта ТИЯ1 на различных этапах его работы. Порт может работать в следующих режимах: 1) ведущий с передачей байтов данных; 2) ведущий с приемом байтов данных; 3) ведомый с приемом байтов данных; 4) ведомый с передачей байтов данных.
В табл. 3.6. описан порядок управления портом ТИЯ1 при работе его в качестве ведущего с передачей байтов (табл. 3.6,а) и с приемом байтов (табл. 3.6,6) при отсутствии ошибок в процессе обмена. В таблице используются следующие обозначения: ° Я.А, И/В. — адресный байт, где Я.А — адрес ведомого устройства; ° РАТА — байт данных; в (ТИЖ) — байт в регистре ТИЖ ° (ТИРВ.) — байт в регистре ТИ1Ж; °: — знак операции установки разряда регистра ТИСК в указанное состояние. В исходном состоянии разряд ТИЕТА в регистре ТИСЫ находится в единичном состоянии, остальные разряды — в нулевом состоянии. В табл. 3.7.
описан порядок управления портом ТИЯ1 при работе его в качестве ведомого с приемом байтов (в табл. 3.7,а) и с передачей байтов (в табл. 3.7,6) при отсутствии ошибок в процессе обмена. Глава 3 В исходном состоянии разряды ТИЕТА и ТУПЕА регистра ТЮССО находятся в единичном состоянии, другие разряды — в нулевом состоянии; в регистре ТИАРА записан байт 5ЕА, О/1. Табли ца 3.6 Условие переход» йя шага Операция по команде в программе к следующему шагу а) ведущий с передачей байтов данных б) ведущий с приемом байтов данных Таблица 3.7 йэ шага Условие выполнения шага Операция по команде в программе а) ведомый с приемом байтов данных работа периферийных устройств Окончание табл.
3.7 йя шага условие выполнения шага Операция по команде в программе о) ведомый с выдачей байтов данных Единичное состояние разряда ТЖ1ЫТ в процессе обмена может определяться программными средствами с использованием команды условного перехода или аппаратными средствами по запросу прерывания Т%81. Во втором случае при инициализации порта необходимо установить в единичное состояние также разряд Т~Ч1Е регистра ТЧ~СК. При появлении ошибок в процессе обмена в регистре состояния ТЖЖ появляются коды иные, чем указаны в табл. 3.6 и 3.7.
Разряд ТЖЖС регистра ТЖСК устанавливается в единичное состояние при попытке записать код в регистр ТЮВК во время сдвига кода в регистре. 3.5. Таймеры-счетчики общего назначения Таймер-счетчик Т/СХ (Х - О, 1, 2 — цифра в имени таймера-счетчика) любого типа содержит базовый счетчик ТСХТХ, имеющий восемь или шестнадцать разрядов, и восьмиразрядный регистр управления ТССВ.Х. Кроме того, в состав таймера-счетчика входят один илн несколько разрядов регистра запросов, прерывания Т1ГК (№ $38, у МК типа г28— № $05) и столько же разрядов регистра маскирования прерываний Т1МЯК (№ $39, у МК типа г28 — № $06). Регистры Т1ГК и Т1МЯК являются обшими для всех таймеров-счетчиков микроконтроллера.
Разряд регистра Т1ГК устанавливается в единичное состояние при формировании в таймере-счетчике определенного запроса прерывания. Запрос прерывания проходит в блок прерываний при единичном состоянии соответствующего разряда регистра Т1МБК. Разряд регистра Т1ГК сбрасывается в нулевое состояние аппаратно при переходе микроконтроллера к выполнению соответствующей прерывающей программы или программно при выполнении команды установки бита в единичное состояние (!). В состав таймера-счетчика, выполняющего функцию сравнения/РЖМ, входит регистр сравнения ОСКХ, а в состав таймера-счетчика, выполняюшего функцию захвата, — регистр захвата 1СКХ.
Разрядность регистров ОСЯХ и 1СКХ равна разрядности базового счетчика ТС1чТХ. Глава 3 58 Для записи кода в шестнадцатиразрядный счетчик или регистр сначала выполняется команда записи (01)Т) байта в старшую половину разрядов (Н), при этом поступавший из регистра общего назначения старший байт запоминается в регистре временного хранения.
Затем выполняется команда записи (О(1Т) младшего байта в младшую половину разрядов (1), при этом оба байта одновременно записываются в счетчик или регистр. Для чтения кода из шестнадцатиразрядного счетчика или регистра сначала выполняется команда чтения (1Х) байта из младшей половины разрядов (1), при этом считанный младший байт поступает в регистр общего назначения, а старший байт запоминается в регистре временного хранения. Затем выполняется команда чтения байта из старшей половицы разрядов (Н), при этом старший байт из регистра времепног~ хранения поступает в указанный в команде регистр общего назначения.
3.5.1. Таймер-счетчик типа А Таймер-счетчик типа А есть у микроконтроллеров всех типов кроме микроконтроллера типа ш103. Он имеет имя Т/СО (Х = 0), Таймер- счетчик типа А формирует запрос прерывания Т/СО ОЧЕ при переполнении восьмиразрядного базового счетчика ТСХТО (№ 332, у МЕ типа 128 — № $03). Структурная схема таймера-счетчика типа А изображена на рпс.
3.9. Рис. 3.9 Тактовый сигнал микроконтроллера СК поступает в пересчетную схему (ргелса1ег) ПС, представляющую собой десятиразрядпый счетчик, гд~ выполняется деление частоты тактового сигнала на 8, б4, 256 и 1024 Сигналы с четырех выходов пересчетной схемы поступают в схем~ управления СУ (мультиплексор). При наличии в микроконтроллере таймера-счетчика Т/С1 эти же сигналы поступают в Т/С1.