- •Вопрос 1
- •Вопрос 2
- •Алгоритм работы управляющего автомата
- •Inta - признак начала работы в режиме прерывания.
- •Вопрос 3
- •Способы адресации
- •Спецкоманды
- •Псевдокоманды
- •2.4. Способы адресации
- •2.5. Форматы команд 16-разрядного мп
- •2.6. Система команд 16-разрядного мп
- •2.6.1. Команды передачи данных
- •2.6.2. Команды обработки данных
- •2.6.3. Команды управления
- •2.6.4. Команды условного перехода
- •2.6.5. Команды обработки цепочек данных
- •Вопрос 4
- •Вопрос 5
- •Организация шин микроЭвм.
- •Увеличение нагрузочной способности шин мп
- •Шинные формирователи
- •Системный контроллер
- •Вопрос 6
- •Вопрос 7
- •Инициализация.
- •2 Разряда
- •Г Сброс раф работы первичного автомата
- •Вопрос 8
- •Структурная схема.
- •Режимы работы.
- •Управляющие слова, инициализация (уси).
- •Каскадная схема включения.
- •Вопрос 10
- •3.4. Обработка прерываний
- •3.5. Организация прямого доступа к памяти
- •3.6. Запуск и сброс микропроцессора
- •Вопрос 11
- •Вопрос 12
- •Вопрос 13
- •Вопрос 14
- •Вопрос 15
- •Сторожевые таймеры
- •Организация таймеров/счетчиков.
Вопрос 14
последовательный ввод-вывод информации в AVR: каналы SPI и UART.
Аналоговый ввод-вывод (Аналоговый компаратор)
Микроконтроллер Atmega103 имеет два последовательных порта: SPI и UART
Последовательный периферийный интерфейс – SPI(Serial Peripheral Interface). Интерфейс обеспечивает высокоскоростной синхронный обмен данными. Основные возможности интерфейса:
- дуплексный 3-проводный синхронный обмен данными
- режим работы ведущий/ведомый
- обмен с передаваемыми первыми старшим или младшим битами
- 4 программируемые скорости обмена данными
- флаг прерывания по окончанию передачи
- активация из Idle режима (только в режиме ведомого)
Вывод PB1(SCK) является выходом тактового сигнала ведущего микроконтроллера и входом тактового сигнала ведомого. По записи ведущим процессором данных в регистр SPI начинает работать тактовый генератор SPI, и записанные данные сдвигаются через вывод вывода PB2(MOSI) ведущего микроконтроллера на вывод PB2(MOSI) входа ведомого микроконтроллера. После сдвига одного байта тактовый генератор SPI останавливается, устанавливает флаг окончания передачи (SPIF). Если в регистре SPCR установлен бит разрешения прерывания SPI(SPIE), произойдет запрос прерывания. Вход выбора ведомого PB0(SS#), для выбора индивидуального SPI устройства в качестве ведомого, устанавливается в низкий уровень. При установке высокого уровня на выводе PB0(SS#) вывод PB2(MOSI) может быть использован в качестве выхода входа. Режим ведущий/ведомый может быть установлен и программным способом установкой или очисткой бита MSTR в регистре управления SPI
Два сдвиговых регистра ведущего и ведомого микроконтроллеров можно рассматривать как один разнесенный 16-разрядный циклический сдвиговый регистр. При сдвиге данных из ведущего МК в ведомый одновременно происходит сдвиг данных из ведомого МК в ведущий, т.е. в течение одного цикла сдвига происходит обмен данными между ведущим и ведомым МК
В системе организованна одиночная буферизация передающей стороны и двойная буферизация приемной стороны. Передаваемые символы не могут быть записаны в регистр данных SPI прежде, чем будет полностью завершен цикл сдвига. При приёме данных принимаемый символ должен быть считан из регистра данных SPI прежде, чем будет завершен прием следующего символа, в противном случае предшествующий символ будет потерян.
При разрешенном SPI обмене направление данных на выводах MOSI, MISO, SCK и SS# настраиваются в соответствии с таблицей
Вывод |
Направление ведущего |
Направление ведомого |
MOSI |
Определяется пользователем |
Вход |
MISO |
Вход |
Определяется пользователем |
SCK |
Определяется пользователем |
Вход |
SS |
Определяется пользователем |
Вход |
Регистр управления SPI –SPCR: адрес $0D($2D)
7 6 5 4 3 2 1 0 разряды
SPIE |
SPE |
DORD |
MSTR |
CPOL |
CPHA |
SPR1 |
SPR0 |
0 0 0 0 0 0 0 0 исходный
Код
Бит 7 – SPIE –разрешение прерывания SPI. Установка бита SPIE приводит к установке бита SPIF регистра SPSR и, при разрешении глобального прерывания, к выполнению прерывания SPI.
Бит 6 – SPE – разрешение SPI. Установка бита SPE разрешает подключение SS, MOSI, MISO и SCK к выводам PB4, PB5, PB6, PB7.
Бит 5 – DORD– порядок данных. При установленном бите DORD передача слова данных происходит вперед младшим байтом. При очищенном бите DORD первым передается старший байт слова данных
Бит 4 –MSTR – выбор режима ведущий/ведомый. При установленном бите MSTR порт SPI работает в режиме ведущего, а при очищенном бите – в режиме ведомого. Если SS# определен как вход и на него подан низкий уровень при установленном MSTR, то MSTR будет сброшен и будет установлен, бит SPIF в регистре SPSR. Чтобы вновь разрешить ведущий режим SPI, пользователь должен установить MSTR
SPR1 |
SPR0 |
Тактовая частотаSCK |
0 |
0 |
fc/4 |
0 |
1 |
fc/16 |
1 |
0 |
fc/64 |
1 |
1 |
fc/128 |
Бит 2 – CPHA – фаза тактового сигнала
Бит 1,0 - SPR1,SPR0 – выбор частоты тактового сигнала. Эти два бита управляют частотой тактового сигнала прибора, работающего в режиме ведущего. В режиме ведомо состояния битов влияние не оказывают.
Соотношение между частотой SCK и частотой генератора
Регистр состояния SPI –SPSR: адрес $0E($2E)
7 6 5 4 3 2 1 0 разряды
SPIF |
WCOL |
- |
- |
- |
- |
- |
- |
0 0 0 0 0 0 0 0 исходный
Код
Бит 7 - SPIF – флаг прерывания по SPI. По завершении обмена последовательными данными бит SPIF устанавливается и если бит SPIE в регистре SPCR установлено глобальное прерывание, прерывание по SPI обрабатывается. Бит SPIF очищается аппаратно при выполнении процедуры обработки соответствующего вектора прерывания. Бит SPIF может быть очищен также при первом чтении регистра состояния SPSR при установленном бите SPIF с последующем обращением к регистру данных SPDR.
Бит 6 –WCOL – флаг ошибки при записи. Бит WCOL устанавливается, если в процессе передачи данных выполнялась запись в регистр данных SPDR. Бит WCOL (и бит SPIF) аппаратно очищается при первом чтении регистра SPSR с установленным WCOL и последующим обращением к регистру данных SPDR.
Биты 5…..0 – Res- зарезервированные биты
Регистр данных SPI –SPDR: адрес $0F($2F)
7 6 5 4 3 2 1 0 разряды
MSB |
|
|
|
|
|
|
LSB |
0 0 0 0 0 0 0 0 исходный
Код
SPDR представляет собой регистр данных с возможностью чтения/записи и предназначен для пересылки данных между регистровым файлом и сдвиговым регистром SPI. Запись в регистр SPDR инициирует передачу данных, считывание регистра приводит к чтению сдвигового регистра приемника.
Универсальный асинхронный приемопередачик – UART.
Микроконтроллеры ATmega103 оснащены дуплексным универсальным приёмопередатчиком (UART). Его основные возможности :
- генератор обеспечивает любую скорость передачи информации в бодах
- высокая скорость передачи при низкой частоте XTAL
- 8-разрядный или 9-разрядный форматы данных
- обнаружение ошибок формирование кадров
- детектирование бита ложного старта
- три отдельных прерывания: по завершению передачи, по пустому регистру передаваемых данных и по завершению приёма.
ТХС -прерывание по завершению передач
UDRE -прерывание по пустому регистру сдвига
UDR – регистр данных сдвоенный (для передачи и для приёма) регистр
UCR – регистр управления
USR – регистр статуса
Передача данных инициируется записью передаваемых данных в регистр данных UDR. Данные пересылаются из UDR в сдвиговый регистр передатчика в следующих случаях:
- новый символ записан в UDR после того, как был выведен из регистра стоповый бит предшествующего символа. Сдвиговый регистр загружается немедленно
- новый символ записан в UDR прежде, чем был выведен стоповый бит предшествовавшего символа. Сдвиговый регистр загружается после выхода стопового бита передаваемого символа, находящегося в сдвиговом регистре.
Если 10(11)-разрядный сдвиговый регистр передатчика пуст, то данные из регистра UDR передаются в сдвиговый регистр. При этом устанавливается бит UDRE регистра USR. При установленном UDRE UART готов принять следующий символ. Запись в UDR очищает бит UDRE. Когда данные переданы из UDR в сдвиговый регистр, бит 0 сдвинутого регистра сбрасывается(состояние 0 стартовый бит), а старший бит устанавливается(состояние 1 –стоповый бит). Если в регистре управления UCR установлен бит CHR9(т.е. выбран режим 9-разрядного слова данных), то бит ТхB8 регистра UCR пересылает в бит 9 сдвигового регистра передатчика.
Сразу после пересылки данных в сдвиговый регистр импульсом синхросигнала стартовый бит выдвигается на вывод ТхD. За ним следуют биты данных, младший бит первым. Когда будет выдвинут стоповый бит, сдвиговый регистр загрузится новыми данными, если байт был записан в регистр UDR во время передачи. В процессе загрузки бит UDRE находится в установленном состоянии. Если новые данные не будут загружены в UDR до выдачи стопового бита, то флаг UDRE остается установленным. В этом случае, после того как стоповый бит будет присутствовать на выводе TхD в течение одного такта, в регистре статуса UART (USR) устанавливается флаг завершения передачи TХC
Регистр Данных UART – UDR: адрес $0С($2С)
7 6 5 4 3 2 1 0 разряды
MSB |
|
|
|
|
|
|
LSB |
0 0 0 0 0 0 0 0 исходный
Код
В действительности имя UDR представляет собой два физически разделенных регистра – регистр передачи данных и регистр приема данных, использующих один и тот же адрес. При записи в регистр запись производится в регистр передачи данных UART, а при чтении выполняется чтение содержимого регистра приема данных UART.
Регистр Статуса UART – USR(UART Status Register): адрес $0С($2С)
7 6 5 4 3 2 1 0 разряды
RxC |
TxC |
UDRE |
FE |
OR |
- |
- |
- |
0 0 0 0 0 0 0 0 исходный
Код
Регистр USR обеспечивает чтение информации о состоянии UART
Бит 7 - RxC –прием завершен. Этот бит устанавливается при пересылке принятого символа из сдвигового регистра приемника в регистр UDR вне зависимости от отсутствия или наличия ошибок приема кадра. При установленных в UCR бите RxCIE и в USR бите RxC выполняется прерывание по завершению приема UART. Бит RxC очищается при чтении UDR. При приеме данных по прерыванию процедура обработки прерывания после завершения приема должна прочитать UDR с тем, чтобы очистить RxC, иначе по ее окончании произойдет новое прерывание.
Бит 6 –Txc – передача завершена.Этот бит устанавливается когда весь символ(включая стоповый бит) выведен из сдвигового регистра передачи, а в регистр UDR не записаны новые данные. Этот флаг используется при полудуплексном протоколе обмена, когда оборудование передачи должно установить режим приема и освободить коммуникационную нишу сразу после завершения передачи.
Бит 5- UDRE – регистр данных пуст. Этот бит устанавливается когда весь символ записанный в UDR, пересылается в сдвиговый регистр передатчика. Установка этого бита означает, что передатчик готов к получению нового символа.
Бит 4 – FE – ошибка кадра. Этот бит устанавливается при обнаружении условий ошибочного приема кадра, т.е. когда при приеме стопового бита обнаружено состояние 0. Бит FE очищается при приеме стопового бита логическим уровнем 0.
Бит 3- DOR- переполнение данных. Бит DOR устанавливается при обнаружении условий переполнения, т.е. когда символ, уже находящийся в регистре UDR, не прочитан перед пересылкой нового символа из сдвигового регистра приемника. Бит DOR буферизирован, т.е. он будет оставаться установленным, пока не будут читаны правильные данные из UDR. Бит DOR очищается, когда данные приняты и пересланы в UDR.
Бит 2..0- Res – зарезервированные биты
Регистр управления UART – UCR(UART Control Register): адрес $0A($2A)
7 6 5 4 3 2 1 0 разряды
RxCIE |
TxCIE |
UDRIE |
RxEN |
TxEN |
CHR9 |
RxB8 |
TxB8 |
0 0 0 0 0 0 0 0 исходный
Код
Бит 7- RxCIE – разрешение прерывания по завершению приема. При установленном 1 бите RxCIE и разрешении глобального прерывания установка бита RxC в регистре USR приведет к прерыванию после завершения приема.
Бит 6 - TxCIE - разрешение прерывания после завершения передачи. При установленном бите TxCIE и разрешении глобального прерывания установка бита TxC в регистре USR приведет к выполнению прерывания после завершения передачи.
Бит 5 - UDRIE - разрешение прерывания по пустому регистру данных. При установленном бите UDRIE и разрешении глобального прерывания установка бита UDRE в регистре USR приведет к прерыванию по пустому регистру данных UART.
Бит 4 - RxEN - разрешение приемника. Установленный бит RxEN разрешает использование приемника UART. Если приемник запрещен, то флаги статуса TXC, DOR и FE установить не возможно. Если эти флаги установлены, то очистка бита RxEN не приведет к очистке флагов.
Бит 3 - TxEN - разрешение передатчика. Установленный бит TxEN разрешает использование приемника UART.При запрещении передатчика во время передачи символа, передатчик не будет заблокирован до тех пор, пока не будут полностью переданы символ в сдвиговом регистре плюс любой находящийся в UDR следующий символ.
Бит 2- CHR9- режим 9-разрядных символов. При установленном бите CHR9 передаются и принимаются 9-разрядные символы плюс стартовый и стоповый бит. Девятые биты читаются и записываются с использованием битов RxB8 и TxB8 регистра UCR. Девятый бит данных может использоватся как дополнительный стоповый бит или бит контроля четности.
Бит 1- RxB8- прием 8-разрядных данных. При установленном бите CHR9 бит TxB8 является девятым битом данных принятого символа.
Бит 0 - TxB8- передача 8-разрядных данных. При установленном бите CHR9 бит TxB8 является девятым битом данных передаваемого символа.
Регистр формирования синхросигналаUART – UBRR: адрес $09($29)
7 6 5 4 3 2 1 0 разряды
MSB |
|
|
|
|
|
|
LSB |
0 0 0 0 0 0 0 0 исходный
Код
Формирователь синхросигнала последовательного обмена представляет делитель, генерирующий импульсы синхросигнала с частотой определяемой выражением.
BAUD=Fck/16(UBRR+1) где BAUD –частота в бодах; Fck- частота тактового генератора;
UBRR равно содержимому регистра UBRR(Baud Rate register=0..255),
Регистр UBRR является 8-разрядным регистром с возможностью чтения/записи. Числовое чтение в нем определяет скорость UART.
Аналоговый компаратор
Аналоговый компаратор сравнивает уровни напряжений на неинвертирующем входе AIN0 и инвертирующем входе AIN1. Если напряжение на неинвертирующем входе AIN0 превышает напряжение на инвертирующем входе AIN1, то выход аналогового компаратора ACO принимает единичное состояние. Выход компаратора может быть настроен для использования в качестве источника входного сигнала для схемы захвата фронтов таймера-счетчика 1. Кроме того, компаратор может генерировать собственный запрос на обработку прерывания. Пользователь может выбрать несколько событий, по которым возникает прерывание: нарастающий, падающий фронт на выходе компаратора или любое его изменение. Функциональная схема компаратора и связанной с ним логики представлена на рисунке 107. Функциональная схема аналогового компаратора Регистр специальных функций ввода-вывода – SFIOR
Разряд 3 – ACME: Выбор мультиплексора на входе аналогового компаратора Если выключен аналогово-цифровой преобразователь (ADEN=0 в регистре ADCSRA) и в данный разряд записана лог. 1, то к инвертирующему входу аналогового компаратора подключен выход аналогового мультиплексора АЦП. Запись в данный разряд лог. 0 приведет к подключению инвертирующего входа аналогового компаратора к выводу микроконтроллера AIN1. Более подробно об использовании данной настройки см. в разделе “Мультиплексированный вход аналогового компаратора”. Регистр состояния и управления аналогового компаратора – ACSR
Разряд 7 – ACD: Отключение аналогового компаратора Запись в данный разряд лог. 1 приводит к снятию питания с аналогового компаратора. Данный разряд можно устанавливать в любой момент при необходимости отключения аналогового компаратора. Его использование позволяет снизить энергопотребление в активном режиме и режиме холостого хода. Перед изменением бита ACD необходимо отключить прерывание по аналоговому компаратору путем сброса бита ACIE в регистре ACSR. В противном случае может возникнуть прерывание после изменения значения данного бита. Разряд 6 – ACBG: Подключение источника опорного напряжения к аналоговому компаратору После установки данного бита к неинвертирующему входу компаратора подключается источник опорного напряжения. После сброса данного разряда неинвертирующий вход компаратора связан с выводом AIN0 микроконтроллера. См. также “Встроенный источник опорного напряжения”. Разряд 5 – ACO: Выход аналогового компаратора Данный бит выхода аналогового компаратора связан непосредственно с выходом ACO через цепь синхронизации. Синхронизация реализована как временная задержка на 1 – 2 машинных цикла. Разряд 4 – ACI: Флаг прерывания аналогового компаратора Данный разряд устанавливается аппаратно, при возникновении события в соответствии с установками бит ACIS1 и ACIS0. Запрос на обработку прерывания аналогового компаратора выполняется, если установлены биты ACIE и I в регистре SREG. ACI сбрасывается аппаратно при переходе на соответствующий вектор обработки прерывания. Альтернативно, бит ACI можно сбросить программно путем записи лог. 1 в данный флаг. Разряд 3 – ACIE: Разрешение прерывания аналогового компаратора Если в данный разряд записана лог. 1 и установлен бит I в регистре статуса, то прерывание по аналоговому компаратору активизируется. Запись в данный разряд лог. 0 приводит к отключению данного прерывания. Разряд 2 – ACIC: Подключение аналогового компаратора к схеме захвата фронтов Установка данного разряда приводит к разрешению совместной работы схемы захвата фронтов таймера-счетчика 1 и аналогового компаратора. В этом случае, выход аналогового компаратора непосредственно подключен к входному каскаду схемы захвата фронтов, позволяя к компаратору добавить функции подавления шумов и настройки фронтов прерывания по захвату фронта таймером-счетчиком 1.После записи в данный разряд лог. 0 связь между аналоговым компаратором и схемой захвата фронтов разрывается. Для активизации прерывания схемы захвата фронтов таймера-счетчика 1 по срабатыванию аналогового компаратора необходимо установить бит TICIE1 в регистре маски прерывания таймера (TIMSK). Разряды 1, 0 – ACIS1, ACIS0: Выбор события прерывания аналогового компаратора Данные разряды определяют какое событие приводит к генерации запроса на прерывание аналогового компаратора. Варианты установок данных разрядов и их назначение представлены в табл. Таблица 93 - Установки разрядов ACIS1, ACIS0
Перед изменением бит ACIS1/ACIS0 необходимо отключить прерывание по аналоговому компаратору путем сброса бита разрешения прерывания в регистре ACSR. В противном случае может возникнуть прерывание при изменении значений данных бит. Мультиплексированный вход аналогового компаратора Имеется возможность использовать выводы ADC7..0 в качестве неинвертирующих входов аналогового компаратора. Для организации такого ввода используется мультиплексор АЦП и, следовательно, в этом случае АЦП должен быть отключен. Если установлен бит разрешения подключения мультиплексора к аналоговому компаратору (бит ACME в SFIOR) и выключен АЦП (ADEN=0 в регистре ADCSRA), то состояние разрядов MUX2..0 регистра ADMUX определяют какой вывод микроконтроллера подключен к неинвертирующему входу аналогового компаратора (см. табл. 94). Если ACME сброшен или установлен ADEN, то в качестве неинвертирующего входа аналогового компаратора используется вывод микроконтроллера AIN1. Таблица 94 – Мультиплексированный вход аналогового компаратора
|