Реферат по предмету "Коммуникации и связь"


Микроконтроллеры семейства AVR фирмы Atmel

Федеральное агентство железнодорожноготранспорта
Дальневосточный ГосударственныйУниверситет путей сообщения
ИИФО
ГОУ ВПО
Кафедра «Телекоммуникации»
Курсовой проект
По дисциплине:«Микропроцессорные информационно управляющие системы»
По теме:«Микроконтроллеры семейства AVR фирмы Atmel»
г. Хабаровск
2010г.

Введение
В классической микропроцессорнойсистеме используются отдельная микросхема процессора, отдельные микросхемыпамяти и отдельные порты ввода вывода. Стремительное развитие микропроцессорнойтехники требует всё большей и большей степени интеграции микросхем.
Именно поэтому былиразработаны микросхемы, которые объединяют в себе сразу все элементымикропроцессорной системы. Такие микропроцессоры называются микроконтроллерами.В советское время такие микросхемы называли «Однокристальные микро ЭВМ».
Для однокристальныхмикроконтроллеров понятие «центральный процессор» обычно не употребляется. Таккак процессор – это все-таки отдельное устройство. Функции процессора вмикроконтроллере заменяет арифметико-логическое устройство (АЛУ).
Кроме АЛУ,микроконтроллер содержит в своём составе:
♦ тактовыйгенератор;
♦ память данных;
♦ памятьпрограмм;
♦ портыввода-вывода.
Все эти элементысоединены между собой внутренними шинами данных и адреса. С внешним мироммикроконтроллер общается при помощи портов ввода-вывода. Любой микроконтроллервсегда имеет один или несколько портов. Кроме того, современныемикроконтроллеры всегда имеют встроенную систему прерываний, а также встроенныепрограммируемые таймеры, компараторы, цифроаналоговые преобразователи и многоедругое.
Если речь идёт не обольшом компьютере, а о портативном устройстве управления, то в нём применяютсяименно микроконтроллеры. Конечно, любая реальная схема редко обходится безпростых логических микросхем, триггеров, счётчиков и тому подобного. Но основойвсегда является микроконтроллер. Чистые микропроцессоры в настоящее времяприменяются только в персональных компьютерах.

1. МикроконтроллерATtiny2313/V фирмы Atmel
 
1.1 Структура, основныехарактеристики и возможности
Микросхема ATtiny 2313представляет собой восьмиразрядный микроконтроллер с внутренней программируемойFlash-памятью размером 2 Кбайт.
Общие сведения:
♦ используетAVRRISC архитектуру;
♦AVR–это высокоебыстродействие и специальная RISC-архитектура с низким потреблением;
♦ 120 мощныхинструкций, большинство из которых выполняется за один машинный цикл;
♦ 32восьмиразрядных регистра общего назначения;
♦ полностьюстатическая организация (минимальная частота может быть равна 0);
♦ до 20 миллионовопераций в секунду (MIPS/Sec) при тактовой частоте 20 МГц.
Сохранение программ иданных при выключенном питании:
♦ 2 Кбайтвстроенной программируемой Flash-памяти, до 10000 циклов записи/стирания;
♦ 128 байтвстроенной программируемой энергонезависимой памяти данных (EEPROM);
♦ до 10000 цикловзаписи/стирания;
♦ 128 байтвнутреннего ОЗУ (SRAM);
♦ программируемыебиты защиты от чтения и записи программной памяти и EEPROM.
Периферийныеустройства:
♦ один8-разрядный таймер/счётчик с программируемым определителем и режимомсовпадения;
♦ один16-разрядный таймер/счетчик с программируемым определителем, режимом совпаденияи режимом захвата;
♦ четыре каналаШИМ (PWM);
♦ встроенныйаналоговый компаратор;
♦ программируемыйсторожевой таймер и встроенный тактовый генератор;
♦ универсальныйпоследовательный интерфейс USI (Universal Serial Interface);
♦ полнодуплексныйUSART.
Особенностимикроконтроллера:
♦ специальныйвход debug WIRE для управления встроенной системой отладки;
♦ внутрисистемныйпрограммируемый последовательный интерфейс SPI;
♦ поддержка каквнешних, так и внутренних источников прерываний;
♦ три режиманизкого потребления (Idle, Power-downи Standby);
♦ встроеннаясистема аппаратного сброса при включении питания;
♦ внутреннийперестраиваемый тактовый генератор;
♦ цепиввода-вывода и корпус;
♦ 18программируемых линий ввода-вывода;
♦ три видакорпусов;
PDIP– 20 контактов;
SOIC – 20 контактов;
QFN/MLF – 20 контактныхплощадок.
Напряжения питания:
♦ 1,8 – 5,5 В(для ATtiny2313V);
♦ 2,7 – 5,5 В(для ATtiny2313).
Диапазон частоттактового генератора ATtiny2313V:
♦ 0-4 МГц принапряжении 1,8-5,5 В;
♦ 0–10 МГц принапряжении  2,7-5,5 В.
Диапазон частоттактового генератора ATtiny2313:
♦ 0-10МГц принапряжении 2,7-5,5 В;
♦ 0–20 МГц принапряжении  4,5-5,5 В.
Ток потребления вактивном режиме:
♦ 1 МГц, 1,8 В:230 мкА;
♦ 32 кГц, 1,8 В:20 мкА (с внутренним генератором).
Ток потребления врежиме низкого потребления:
♦ не более 0,1мкА при напряжении 1,8 В.
Блок-схемамикроконтроллера
Назначение выводовмикросхемы ATtiny2313 приведено на рис. 1. Блок-схема микроконтроллераATtiny2313 приведена на рис. 2.
Ядро AVR имеет большойнабор инструкции для работы с 32 регистрами общего назначения. Все 32 регистранепосредственно связаны арифметико-логическим устройством (ALU), котороепозволяет выполнять команду для двух разных регистров за один такт системногогенератора. Такая архитектура позволила достигнуть производительности в десятьраз большей, чем у традиционных микроконтроллеров, построенных поCISC-технологии.

/>
Рис. 1 — Назначениявыводов микросхемы ATtiny2313
1.2 Особенностимикросхемы ATtiny2313
Микросхема ATtiny2313имеет следующие особенности:
♦ 2 Кбайтсистемной программируемой Flash-памяти программ;
♦ 128 байтEEPROM;
♦ 128 байт SRAM(ОЗУ);
♦ 18 линийввода-вывода (I/O);
♦ 32 рабочихрегистра;
♦ однопроводнойинтерфейс для внутрисхемной отладки;
♦ двамногофункциональных таймера/счетчика с функцией совпадения;
♦ поддержкавнешних и внутренних прерываний;
♦последовательный программируемый USART-порт;
/>
Рис. 2 — Блок-схемамикроконтроллера ATtiny2313
♦ универсальныйпоследовательный интерфейс с детектором начала передачи;
♦ программируемыйсторожевой таймер с внутренним генератором;
♦ три программноизменяемых режима энергосбережения.
В режиме Idle происходитприостановка центрального процессора, остальные системы продолжают работать.Выход из этого режима возможен как по внешнему прерыванию, так и повнутреннему. Например, при переполнении таймера.
В режиме PowerDown сохраняетсясодержимое регистров, но приостанавливается работа внутреннего генератора иотключаются все остальные функции микросхемы. Выход из режима возможен по внешнемупрерыванию или после системного сброса. Такое решение позволяет совмещатьбыстрый старт с низким энергопотреблением.
Микросхема изготовленас использованием уникальной высокочастотной технологии фирмы Atmel. ВнутренняяFlash-память программ может быть перепрограммирована при помощи ISP-интерфейсабез извлечения микроконтроллера из платы. Объединение 8-разрядногоRISC-процессора внутрисистемной перепрограммируемой Flash-памятью на одномкристалле делают микросхему ATtiny2313 мощным средством, которое обеспечиваеточень гибкие и недорогие решения многих прикладных задач управления.
В моей курсовом проектебудет описана некоторая часть микроконтроллера.

2. Центральное ядропроцессора
Главная функцияцентрального ядра процессора – управление процессом выполнения программ. Дляэтого центральный процессор должен иметь непосредственный доступ к памяти,должен быть способен производить все виды вычислений и выполнять запросы напрерывания.
Рассмотрим общиевопросы архитектуры AVR.
2.1 Кратка характеристикаархитектуры
Чтобы максимальноускорить работу и сделать возможным параллельное выполнение несколькихопераций, микроконтроллеры AVR используют Гавардскую архитектуру (рис. 3).
/>
Рис. 3 — Блок-схемаархитектуры AVR

Такая архитектурапредусматривает отдельную память и отдельную шину адреса как для программы, таки для данных.
Каждая команда из пятипрограмм выполняются за один машинный цикл с использованием многоуровневойконвейерной обработки. В тот момент, когда очередная команда выполняется,следующая команда считывается из программной памяти. Такая концепция позволяетвыполнять по одной команде за один такт системного генератора. Программныйсегмент памяти физически представляет собой встроенную перепрограммируемуюFlash-память.
Файл регистров быстрогодоступа содержит 32 восьмиразрядных регистра общего назначения, доступ ккоторым осуществляется за один такт системного генератора. Это позволяетарифметико-логическому устройству (ОЛУ) осуществлять большинство своих операцийза один такт.
Типичная операция АЛУвыполняется следующим образом: из регистрового файла читаются два операнда,выполняется операция. Результат сохранения опять же в файле регистров. Все этитри действия выполняются за один цикл тактового генератора.
Шесть из этих 32регистраторов могут использоваться как три 16-разрядных регистра-указателякосвенной адресации. Эти сдвоенные регистры могут использоваться для адресацииданных в адресном пространстве ОЗУ. Такая организация даёт возможностьпрограммного вычисления адреса.
Один из этихрегистров-указателей может также использоваться в качестве указателя адресаданных, размещённых в памяти программ (Flash-памяти). Эти дополнительныесоставные 16-разрядные регистры именуются X, Yи Z.
АЛУ поддерживаетарифметические и логические операции между двумя регистраторами или междуконстантой и регистратором. В АЛУ также могут выполняться операции с отдельнымирегистраторами. После каждой арифметической операции обновляется регистр статусадля того, чтобы отразить информацию о её результате.
Последовательностьвыполнения программы может быть изменена командами условного и безусловногоперехода, а также командой вызова подпрограммы, в которых используетсянепосредственная адресация.
Большинство инструкцийAVRпредставляет собой одно 16-разрядное слово. Каждый адрес памяти программысодержит 16-битовую инструкцию или половину 32-разрядной инструкции.
При выполнениипроцедуры обработки прерывания или подпрограммы текущее значение счётчика команд(PC)сохраняется в стеке.
Стек фактическиразмещён в одном адресном пространстве с памятью данных SRAM (ОЗУ) и,следовательно, размер стека ограничен только размером SRAM и тем, какую частьSRAM использует остальная программа.
Программа пользователяобязательно должна инициализировать указатель стека (SP)сразу после сброса(прежде, чем будет выполнена подпрограмма или будет вызвано прерывание).Указатель стека (SP) имеет свой конкретный адрес в пространстве регистровввода-вывода. К данным в ОЗУ (SRAM) можно получить доступ, используя памятьразличных способов адресации, поддержанных архитектурой AVR.
Адресное пространствовсех видов памяти в архитектуре AVR являются регулярным линейным. Гибкий модульпрерываний имеет ряд регистраторов управления в адресном пространстве регистровввода-вывода и дополнительный флаг глобального разрешения прерываний в регистрестатуса.
Каждый вид прерыванияимеет свой отдельный вектор в таблице векторов прерываний. Прерывания имеютприоритет в соответствии с их положением в таблице векторов прерываний. Чемниже адрес вектора прерывания, тем выше приоритет.
Пространство регистровввода-вывода содержит 64 адреса для регистров управления периферийнымиустройствами, регистров управления режимами работы процессора и другими функциямиввода/вывода. К любому регистру ввода-вывода можно получить доступнепосредственно по его номеру или как к ячейке памяти данных. В адресномпространстве памяти данных регистры ввода-вывода располагаются сразу послефайла регистров общего назначения (0x20 – 0x5F).
2.2 АЛУ –арифметико-логическое устройство
Высокоэффективное АЛУработает в прямой связи со всеми 32 регистрами общего назначения. За один циклтактового генератора выполняется арифметическая операция между двумя РОН либомежду РОН и непосредственно указанной константой. Все операции АЛУ разделены натри главных категории:
♦ арифметические;
♦ логические;
♦ операции сразрядами.
Особенностьюархитектуры является то, что при выполнении арифметических операций всеоперанды могут рассматриваться как числа без знака, так и числа со знаком.
Регистр статуса
Регистр статусасодержит информацию о результатах выполнения последней арифметической илилогической команды. Эта информация может использоваться для того, чтобыизменить процесс выполнения программы в командах условного перехода и другихусловных операторах.
При вызове процедурыобработки прерывания регистр статуса автоматически не сохраняется. Программистдолжен обязательно предусмотреть в процедуре обработке прерываний команды,которые будут сохранять содержимое этого регистра в начале и восстанавливатьего в конце. Необходимо учесть, что регистр статуса не может бытьнепосредственно помещён в стековую память. Сначала придётся сохранить в стекеодин из регистров общего назначения, затем поместить в освободившийся регистрсодержимое регистра статуса, а затем уже из этого промежуточного регистрапереместить информацию в стек.
Файл регистров общегоназначения
Файл регистровоптимизирован для набора AVRRISC-инструкций. Для того, чтобы достичь требуемойпроизводительности и гибкости, файл регистров поддерживает следующие схемыввода-вывода:
♦ вывод одного8-разрядного операнда и ввод одного 8-разрядного результата вычислений;
♦ вывод двух8-разрядных операндов и ввод одного 8-разрядного результата вычислений;
♦ вывод двух8-разрядных операндов и ввод одного 16-разрядного результата вычислении;
♦вывод одного16-разрядного операнда и ввод одного 16-разрядного результата вычислений.
На рис. 4 показанаструктура 32 регистров общего назначения, используемых в качестве рабочихрегистров микроконтроллера.
/>
Рис. 4 — Файл регистровобщего назначения микроконтроллеров AVR

Большинство инструкций,оперирующих файлов регистров, имеет прямой доступ ко всем его регистрам, ибольшинство из них выполняется за один такт.
Как показано на рис. 5,каждому регистру также соответствует адрес в пространстве памяти данных, гдеони занимают первые 32 ячейки. Хотя физически регистры не входят в SRAM, такаяорганизация памяти обеспечивает большую гибкость при доступе к регистрам.Указатель косвенного доступа к памяти (один из регистров X, Y или Z) может бытьустановлен на любой регистр из файла.
2.3 X-регистр,Y-регистр и Z-регистр
Регистры R26-R31, кромесвоего основного назначения, имеют дополнительную функцию. Эти регистры могутслужить 16-битными указателями адреса для операций, использующих косвеннуюадресацию. Три косвенных регистра адреса X, Y, и Zопределены так, как этопоказано на рис. 5.
В разных командах,использующих косвенную адресацию, эти регистры могут быть использованы какисточники постоянного адреса, как адресный регистр с автоматическим приращениемадреса и как регистр с автоматическим уменьшением адреса.
/>
Рис. 5 — Сдвоенныерегистры X, Y, Z

Указатель стека
Стек, главным образом,используется:
♦ для временногохранения данных;
♦ для хранениялокальных переменных;
♦ для храненияадреса выхода из подпрограммы или процедуры обработки прерывания.
Регистр указателя стекавсегда указывает на его вершину.
Указатель стекауказывает на стековую область в памяти данных (SRAM). В стеке, кроме прочего,сохраняются;
♦ адрес выхода изподпрограммы;
♦ адрес выхода изпроцедуры обработки прерывания.
Поэтому в любойпрограмме адрес начала стека необходимо определить перед тем, как будет вызваналюбая подпрограмма, и перед тем, как будут разрешены прерывания. Первоначальноуказатель стека должен быть установлен на адрес не ниже 0x60.
Указатель стекауменьшается на единицу, когда данные записываются в стек при помощи командыPUSH, и уменьшается на два, когда в стек записывается в адрес возврата изподпрограммы или процедуры обработки прерывания.
Указатель стекаувеличивается на единицу, когда данные читаются из стека при помощи командыPOP, и увеличивается на два, когда данные извлекаются из стека при выходе изподпрограммы (команда RET) или завершении процедуры обработки прерывания(команда RETI).
Указатель стека во всехмикросхемах AVRвыполнен в виде двух 8-разрядных регистров ввода-вывода. Числофактически используемых разрядов для каждой модели микроконтроллеров разное. Внекоторых моделях, в том числе и вATtiny2313, объём памяти данных настолькомал, что для указателя стека используется только младший из регистров указателястека (SPL). Регистр SPHу них отсутствует. Ниже показана структура регистровуказателя стека для микроконтроллера ATtiny2313.

Память ATtiny2313
Теперь рассмотримразличные виды памяти микроконтроллера ATtiny2313. Архитектура AVRсодержит дваосновных вида памяти:
♦ память данных;
♦ памятьпрограмм.
Кроме того, микросхемаATtiny2313 имеет EEPROM-память для долговременного хранения данных. Все тривида памяти представляют собой непрерывные области с линейно возрастающимиадресами.
2.4 Системнаяперепрограммируемая Flash-память программ
Микросхема ATtiny2313содержит 2 Кбайт встроенной перепрограммируемой памяти для хранения программ.Так как все команды, используемые в AVR, имеют размер 16 или 32 бита, памятьпрограмм организованна как 1Rx 16. В графическом виде адресное пространствопамяти программ показано на рис. 6.
/>
Рис. 6 — Карта памятипрограмм

Память программдопускает не менее 10000 циклов записи/стирания. Счётчик команд (PC) микросхемыATtiny2313 имеет 10 двоичных разрядов и поэтому может работать с адреснымпространством в 1К. Микросхема поддерживает режим низкого программированияпамяти программ, которое может осуществляться по последовательномуSPIинтерфейсу.
В памяти программ можноразмещать также любые данные, которые в процессе работы программы остаютсянеизменными. Для извлечения этих данных из программной памяти используетсякоманда LPM.
2.5 Память данных SRAM
На рис. 6 показанаорганизация памяти данных – ОЗУ (SRAM) микроконтроллера ATtiny 2313. Всегоадресное пространство ОЗУ содержит 224 ячейки, которые заняты:
♦ файломрегистров общего назначения;
♦ дополнительнымирегистрами ввода-вывода;
♦ внутреннейпамятью данных.
Первые 32 ячейкисовмещены с файлом РОН. Следующие 64 ячейки – это стандартная область, гдерасполагаются все регистры ввода-вывода. И лишь оставшиеся 128 ячеек составляютвнутреннею память данных.
Существует пять разныхспособов адресации для памяти данных:
♦ прямая;
♦ косвенная сосмещением;
♦ косвенная;
♦ косвенная спреддекрементом;
♦ косвенная спостприращением.
Регистры R26-R31 (X, Y,Z) служат указателями адреса при всех операциях с косвенной адресацией.
При прямой адресацииуказывается полный адрес байта данных.
При косвенной адресациисо смещением можно охватить по 63 ячеек, начиная с текущего базового адреса, накоторый указывает содержимое регистра Y или Z.
При использованиикосвенной адресации с автоматическим преддекрементом и автоматическим постдекрементномпосле чтения (записи) памяти изменяется адрес, записанный в регистр X, Y или Z.
Для всех памятиспособов адресации доступны все 32 регистра общего назначения, 64 регистраввода-вывода и 128 байтов памяти данных SRAM микросхемы ATtiny2313.
Память данных EEPROM
МикросхемаATtiny2313содержит128 байтов EEPROM-памяти. Она организована как отдельное адресноепространство для хранения данных, в котором каждый байт может быть отдельнопрочитан или записан.
Обмен данными междуEEPROM и центральным процессором описан ниже и происходит при помощи:
♦ регистра адресаEEPROM;
♦ регистра данныхEEPROM;
♦ регистрауправления EEPROM.
Процесс чтения/записиEEPROM
Регистры, используемыедля доступа к EEPROM, — это обычные регистры ввода-вывода. Наличие функцииавтоопределения времени готовности позволяет программе пользователясамостоятельно определять тот момент, когда можно записывать следующий байт.Если программа содержит команды, которые производят запись в EEPROM, необходимопредпринять некоторые предосторожности.
В цепях питания,оснащённых хорошим фильтром, напряжение VCC ри включении и выключении будетизменяться медленно. Это заставляет устройство в течении некоторого времениработать  при более низком напряжении, чем минимально допустимое напряжение дляданной частоты тактового генератора.

3. Порты ввода-вывода
Все портымикроконтроллеров AVRв режиме цифрового ввода-вывода представляют собой полноценныедвунаправленные порты, у которых каждый из выводов может работать как в режимеввода, так и в режиме вывода. Это означает, что каждый отдельный разряд портаможет быть настроен либо как вход, либо как выход, независимо от настройки всехостальных разрядов того же порта.
Настроить разряды портаможно при помощи команд сброса и установки бита SBIи CBI. То же самое касаетсяизменения значения на выходе (если разряд сконфигурирован как выход) иливключения/ отключения внутреннего резистора нагрузки (если разрядсконфигурирован как вход).
Все эти настройкивыполняются отдельно для каждого вывода порта. Выходной буфер каждого извыводов порта содержит симметричный выходной каскад с высокой нагрузочнойспособностью. Нагрузочная способность каждого вывода любого порта достаточнадля непосредственного управления светодиодным дисплеем.
Все выводы любого портаимеют индивидуально подключаемые резисторы нагрузки, которые в случаенеобходимости могут подключаться между этим выводом и источником питания.Входные схемы каждой линии порта имеют по два защитных диода, подключённых кцепи питания и к общему проводу, как это показано на рис. 7.

/>
Рис. 7 — Эквивалентнаясхема входных цепей одного разряда порта ввода-вывода
Буква “x” в описанииимён регистра означает название порта, сточная буква “n” означает номерразряда. При использовании этого имени в программе вместо этих символов нужноподставлять конкретную букву названия порта и конкретный номер разряда.
Например, PORTB3 – длябита номер 3 порта B, если в документации этот бит назывался PORTxn.
Для каждого портаввода-вывода в микроконтроллере имеется три специальных регистра:
♦ PORTx – регистрданных;
♦ DDRx – региструправления;
♦ PINx – регистрнепосредственного чтения состояния линий порта.
Регистрнепосредственного чтения состояния линий порта доступен только для чтения, в товремя как регистр данных и регистр управления доступны как для чтения, та и длязаписи.
Однако тоже возможна запись логической единицы в любой разряд регистра PINx. Она приведёт кпереключению соответствующего разряда регистра данных (PORTx). Каждый разрядрегистра PORTx управляет включением и отключением резистора внутреннейнагрузки, если соответствующий разряд порта находится в режиме ввода.
3.1 Использованиепортов для цифрового ввода-вывода
Каждый разряд портапредставляет собой двунаправленную линию ввода-вывода с возможностьюподключение внутреннего сопротивления нагрузки. На рис. 8 показана,функциональна схема одной линии порта ввода-вывода. Выходной контакт этой линииобозначен на схеме Pxn.
/>
Рис. 8 — Упрощённаясхема одной линии цифрового ввода-вывода
Конфигурация выводов
Каждый разряд портасвязан с тремя разрядами трёх специальных регистров: DDxn; PORTxn; PINxn.
Как уже говорилось:
♦ бит DDxn – эторазряд номер n регистра DDRx;
♦ бит PORTxn –это разряд номер n регистра PORTx;
♦ бит PINxn – эторазряд номер n регистра PINx.
Бит DDxn регистра DDRx выбираетнаправление передачи информации соответствующего разряда. Если в DDxn записаналогическая единица, разряд Pxn работает как выход. Если в DDxn записанлогический ноль, разряд Pxn работает как вход.
Если разряд портасконфигурирован как вход, установка бита PORTxn в единицу включает внутреннийрезистор нагрузки. Для отключения резистора нагрузки нужно в PORTxn логическийноль. Сразу после системного сброса все выводы всех портов переходят в третье(высокоимпендансное) состояние.
Если разряд порта сконфигурированкак выход (установка бита PORTxn в единицу), то эта единица появится на выходепорта. Если в разряд PORTxn записан логический ноль, то и на выходе будет ноль.

4. Внешние прерывания
 
4.1 Назначение и режимыработы
Для вызова внешнихпрерываний используются входы INT0, INT1 или любой из входов PCINT7-0. Еслипрерывания разрешены, то они будут вызваны, даже если выводы INT0, INT1 иPCINT7-0 сконфигурированы как выходы.
Эта особенностьобеспечивает возможность генерировать прерывания программным путём. ПрерываниеPCI1 – это прерывание по изменению сигнала на любом из выводов PCINT7-8.Прерывание PCI0 – это прерывание по изменению любого сигнала PCINT7-0. Причёмкак для прерыванияPCI1, так и для прерывания PCI0 можно произвольно исключитьиз работы любой из закреплённых за ним входов.
Управляющие регистрыPCMSK1 и PCMSK0 определяют, какие из входов будут вызывать соответствующиепрерывание. Прерывание по изменению на контактах PCINT7-0 работает асинхроннымобразом. Поэтому данный вид прерываний может использоваться для пробуждения изовсех спящих режимов, кроме режима Idle.
Прерывания INT0 и INT1поддерживают несколько режимов. Они могут быть вызваны по переднему фронту, позаднему фронту или по статическому сигналу низкого логического уровня. Выбородного из этих режимов производится при помощи регистра управления внешнимипрерываниями – EICRA.
Когда одно изпрерываний INT0 или INT1 разрешено и сконфигурировано как прерывание по низкомувходному уровню, запрос на прерывание будет вырабатываться всё время, пока навходе присутствует низкий уровень.
Вызов прерываний INT0 иINT1 по низкому уровню осуществляется в асинхронном режиме. Это означает, чтотакое прерывание может быть использовано для пробуждения из любого спящегорежима за исключением Idle.
Время запускамикроконтроллера определяется при помощи fuse-переключателей SUT и CKSEL.

5. Восьмиразрядныйтаймер/счётчик с поддержкой режима ШИМ
 
5.1 Назначение иособенности
Таймер/счётчик T0 – этоуниверсальный восьмиразрядный счётный модуль с двумя независимыми модулямисовпадения и с поддержкой ШИМ (PWM). Он позволяет формировать заданныепромежутки времени (для работы в режиме реального времени). А также можетслужить генератором периодических сигналов.
Рассмотрим основныехарактеристики таймера/счётчика.
5.2 Упрощеннаяблок-схема
Упрощенная блок-схемавосьмиразрядного таймера/счётчика приведена на рис. 9. Доступные дляцентрального ядра регистры и цепи передачи данных на схеме показаны полужирнымилиниями.
/>
Рис. 9 — Блок-схема8-разрядного таймера/счётчика

5.3 Регистры
Как счётный регистртаймера/счётчика (TCNT0), так и оба регистра совпадения (OCR0A, и OCR0B)представляют собой восьмиразрядные регистры. Наличие запроса на прерывание (нарис.10 он сокращённо обозначен «выз. прерыв.») всегда можно определить посостоянию соответствующее флага прерываний в регистре TIFR.
Каждое прерывание можетбыть индивидуально замаскировано при помощи регистра маски прерываний таймераTIMSK. Регистры TIFR и TIMSK на рис. 9 не показаны.
Таймер/счётчик можетработать как от внутреннего тактового генератора через предварительныйделитель, так и от внешнего тактового сигнала, поступающего на вход T0. Схемавыбора источника тактового сигнала пропускает тактовые импульсы выбранногоисточника на вход таймера/счётчика, и каждый импульс этого сигнала увеличивает(или уменьшает) его значение.
Если не выбран ни одиниз источников тактового сигнала, таймер/счётчик останавливается.
Сигнал на выходе схемывыбора источника тактового сигнала (clkT0) называется сигналом синхронизациитаймера.
Содержимое регистровOCR0Aи OCR0Bпостоянно сравнивается со значением таймера/счётчика. Результатсравнения может использоваться генератором для генерации сигнала ШИМ или прямоугольныхимпульсов переменной частоты на одном из выходов OC0Aили OC0B.
В момент совпадения водном из каналов устанавливается соответствующий флаг OCF0Aили OCF0B, которыйможет использоваться для генерации запроса на прерывание по совпадению.

5.4 Используемыеобозначения
При описании счётчиковиспользуются специальные обозначения для всех его важных состояний. Этиобозначения приведены в табл. 1.
Обозначения дляосновных состояний 8-разрядного счётчика
Таблица 1BOTTOM Счётчик достигает значения BOTTOM (начало), когда его содержимое равно 0x00 MAX Счётчик достигает значения MAX (максимум), когда его содержимое равно 0xFF (десятичное 255) TOP Счётчик достигает значения TOP(вершина), когда его содержимое достигает самого высокого значению в данном режиме работы. В зависимости от режима значение TOP может быть равно либо 0xFF (MAX), либо значению, записанному в регистре OCR0A (режим сброса по совпадению)
5.5 Модуль счёта
Основойвосьмиразрядного таймера/счётчика является программируемый реверсивный счётныймодуль. На рис. 10 показана блок-схема счётного модуля и его управляющиесигналы.
/>
Рис. 10 — Блок-схемасчётного модуля
Рассмотрим внутренниесигналы:
♦ count –увеличивает или уменьшает содержимое TCNT0 на 1;
♦ direction –выбор между уменьшением и увеличением;
♦ clear – очисткаTCNT0 (установка всех битов в ноль);
♦ clkT0 –тактовая частота таймера/счётчика;
♦ top – возникаетпри достижении TCNT0 максимального значения;
♦ bottom – возникаетпри достижении TCNT0 минимального значения (нуля).
В зависимости от режимаработы таймера, каждый импульс тактового сигнала (clkT0) очищает, увеличиваетили уменьшает значение счётчика. Сигнал clkT0может быть получен как отвнешнего, так и от внутреннего источника тактового сигнала. Это определяетсябитами выбора тактового сигнала (CS02:0). Когда не выбран ни один источниктактового сигнала (CS02:0 = 0), таймер останавливается.
Центральный процессорможет обращаться к значению регистра TCNT0 независимо от того, присутствует лисигнал clkT0 или нет. Команда записи, поступающая от центрального процессора,имеет приоритет над всеми другими операциями (очистки счётчика или операциямисчёта).
Режимы работы таймераопределяются установкой битов WGM01 и WGM00 регистра TCCR0Aи битом WGM02регистра TCCR0B. Есть тесная связь между выбранным режимом работы счётчика ичастотой сигнала на выходе OC0A.
Флаг переполнениятаймера/счётчика (TOV0) устанавливается в соответствии с режимом работы,выбранным при помощи битов WGM01:0. Флаг TOV0 может использоваться длягенерации прерываний центрального процессора.
5.6 Модуль совпадения
Основа модуля –восьмиразрядный компаратор, который непрерывно сравнивает содержимое регистраTCNT0 с содержимым каждого из двух регистров совпадения (OCR0Aили OCR0B).Каждый раз, когда содержимое TCNT0 оказывается равным содержимому OCR0AилиOCR0B, компаратор вырабатывает сигнал совпадения. Этот сигнал устанавливаетсоответствующий флаг совпадения (OCF0Aили OCF0B) в следующем тактовом цикле.
Если соответствующеепрерывание разрешено, установка флага совпадения вызывает прерывание. Флагсовпадения автоматически сбрасывается при запуске процедуры обработкипрерывания. Флаг также может быть очищен программно путём записи в негологической единицы.
В режиме генераторачастот сигнал совпадения используется для генерации выводного сигналасовпадения используется для генерации выводного сигнала в соответствии свыбранным режимом работы, который определяется битами WGM02:0, а также битамивыбора режима сравнения (COM0x 1:0). Сигналы max и bottom используютсягенератором частот в некоторых случаях для получения критических значений вотдельных режимах работы. На рис. 11 показана блок-схема модуля совпадения. Нарисунке буква x – это условное обозначение. Для разных модулей совпадения x равнолибо A либо B.
/>
Рис. 11 — Блок-схемамодуля совпадения

Регистры OCR0xимеютдвойную буферизацию в любом режиме широтно-импульсной модуляции (ШИМ). В режимеNormal и режиме СТС (Сброс при совпадении) двойная буферизация отключается.Двойная буферизация синхронизирует момент обновления регистра OCR0xс моментомдостижения таймером верхнего или нижнего пределов. Синхронизация предотвращаетвозникновение ассиметричных ШИМ-импульсов, то есть импульсов, длина которыхравна нечётному количеству тактов. Таким образом обеспечивается высокоекачество сигналов ШИМ.
Доступ к региструOCR0xможет показаться слишком сложным. На самом деле это не так. Если двойнаябуферизация разрешена, центральный процессор обращается к регистрам OCR0xчерезбуфер. Если буферизация отключена, центральный процессор обращается к регистрамOCR0xнепосредственно.
5.7 Принудительноеизменение состояния выхода совпадения
Во всех не-ШИМ-режимахтаймера сигнал на любом из выходов совпадения может быть изменён принудительнопутём записи единицы в специальный бит FOC0x. Принудительное изменение выходасовпадения не устанавливает флаг OCF0xи не перезагружает таймер.
Сигнал на выходеOC0xбудет изменяться таким же образом, как при реальном совпадении. То естьповедение выхода OC0xбудет зависеть от установки битов COM0x1:0. В зависимостиот значения этих битов сигнал на выходе будет либо установлен в единицу, либосброшен в ноль, либо изменит своё значение на противоположное.

5.8 Блокировка режимасовпадения в момент записи регистра TCNT0
При записи значения врегистр TCNT0 операция сравнения блокируется в течение одного такта входногосигнала таймера. Это происходит даже в том случае, если таймер остановлен. Этаособенность позволяет записывать в регистр OCR0x то же самое значение, что и врегистр TCNT0, не вызывая прерывания при поступлении на вход таймера/счётчикатактового сигнала.
5.9 Использованиемодуля прерывания
Как уже говорилось, влюбом режиме работы таймера в момент записи регистра TCNT0 работа модулясравнения приостанавливается на один период тактового сигнала. Это можетпривести к ошибкам при изменении содержимого регистра TCNT0 независимо от того,запущен таймер/счётчик или нет.
Если значение,записанное в TCNT0, равно значению, записанному в OCR0x, операция сравнениябудет пропущена, что приведёт к неправильной работе таймера в режиме генераторачастоты.
По той же причиненельзя записывать в TCNT0 значение равное BOTTOM, когда счётчик работает врежиме обратного счёта.
Настройка режимовработы выхода OC0xдолжна быть произведена перед тем, как соответствующая линияпорта будет сконфигурирована как выход. Самый простой способ установить нужноезначение на выходе OC0x – использовать принудительную установку (бит FOC0x) врежиме Normal. Регистры OC0x сохраняю своё значение при переключении режимовгенерации сигналов.

5.10 Модуль выводасигнала совпадения
Разряды COM0x1:0выполняют две функции. Генератор частот использует биты COM0x1:0 для того,чтобы определить, как изменится сигнал на выходе модуля совпадения (OC0x) вмомент обнаружения факта совпадения. В то же время биты COM0x1:0 управляютисточником сигнала на выходе OC0x.
На рис. 12 показанаупрощённая схема, демонстрирующая логику работы разрядов COM0x1:0.
/>
Рис. 12 — Схема выводасигнала совпадения
Как видно из рисунка,значение COM0x1:0 влияет на состояние порта ввода вывода микросхемы, независимо от главных регистров управления этим портом (DDR и PORT). Причём когдамы говорим о статусе OC0x, нужно понимать, что внутренний регистр OC0x не то жесамое, что контакт микросхемы OC0x. Сразу после системного сброса в регистрOC0x записывается ноль.
Если любой из битов COM0x1:0установлен,то основная функция порта ввода-вывода отменяется, и на выход проходит сигналсовпадения (OC0x) с генератора частот. При этом, направление передачиинформации контакта OC0x (вход он или выход) всё ещё зависит отсоответствующего бита регистра DDR.
Значение бита,определяющего направление передачи информации для вывода OC0x в случае, если ондолжен работать как выход, должно быть установлено до того, как значениерегистра OC0x поступит на этот выход. Альтернативные функции порта не зависятот режима работы генератора сигналов.
5.11 Режимы работы
Режим работы, то естьповедение таймера/счётчика и выхода сигнала совпадения, определяется какрежимом работы генератора сигналов (WGM02:0), так и режимом вывода сигналасовпадения (COM0x1:0). Состояние битов, определяющих режим вывода сигналасовпадения, не  влияет на последовательность подсчёта, которая определяетсятолько состоянием битов конфигурации генератора сигналов.
Биты COM0x1:0определяют, должен ли выходной сигнал ШИМ быть инвертирован или нет(инвертированный или не инвертированный ШИМ). Для не-ШИМ-режимов содержимоебитов COM0x1:0 определяет, должен ли сигнал на выходе быть установлен вединицу, сброшен в ноль либо переключён в противоположное состояние в моментсовпадения.
5.12 Режим «Normal»
Режим «Normal» (WGM02:0= 0) – это самый простой из режимов работы таймера. В этом режиме направлениесчёта всегда вперёд (содержимое увеличивается), и принудительный сброс счётчикане выполняется. Счётчик просто переполняется, когда достигает максимально длявосьми разрядов значения (TOP = 0xFF), а затем перезапускается сначала (0x00).
При нормальной работефлаг переполнения таймера/счётчика (TOV0) будет установлен в тот момент, когдаTCNT0 станет равно нулю. Флаг TOV0 в этом случае ведёт себя как девятый бит, азатем исключением, что он только устанавливается, но не сбрасывается.
Используя прерывание попереполнению таймера, которое автоматически очищает флаг TOV0, можно увеличитькоэффициент пересчёта программы путём. Режим Normal не имеет никакихособенностей, на которых стоило бы заострять внимание. Новое значение счётногорегистра может быть записано в любой момент времени.
Модуль совпаденияиногда может использоваться для вызова прерываний. Использование сигналасовпадения для генерации сигналов в режиме Normal не рекомендуется, так как этобудет сильно тормозить работу процессора.
5.13 Режим сброса присовпадении (СТС)
В режиме сброса присовпадении или, по-другому, в режиме СТС (при WGM02:0 = 2) регистр OCR0Aиспользуется для того, чтобы управлять коэффициентом пересчёта счётчика. Врежиме СТС счётчик сбрасывается в ноль при совпадении содержимого счётчикарегистра (TCNT0) и регистра OCR0A.
Регистр OCR0A, такимобразом, определяет максимальное значение для счётчика, а, следовательно, и егокоэффициент пересчёта.
Этот режим позволяетмаксимально контролировать частоту сигнала на выходе модуля. Упрощается также иподсчёт внешних событий. Значение счётчика регистра (TCNT0) увеличивается домомента, пока не происходит совпадение между TCNT0 и OCR0A, и затем содержимоесчётчика (TCNT0) очищается.
Прерывание можетвызываться каждый раз, когда счётчик достигает значения TOP. При этомиспользуется флагOCF0A. Если прерывание разрешено, вызывается процедураобработки прерывания, которая может использоваться для того, чтобы обновитьзначение TOP.
Установка TOP чересчурблизко к значению BOTTOM в тот момент, когда счётчик не работает или при низкомкоэффициенте предварительного деления, должна выполняться осторожно, так какрежим СТС не имеет двойной буферизации.
Если новое значение,записанное в OCR0A, будет ниже, чем текущее значение TCNT0, то источникпропустит момент совпадения. В результате счётчик продолжит счёт до своегомаксимального значения (0xFF), затем перейдёт через ноль и лишь затем произойдётмомент совпадения.
Для генерации выходногосигнала в режиме СТС выход OC0Aможет быть установлен в режим переключениявыходного уровня каждый раз в момент совпадения. Для этого нужно установить всоответствующее положение биты режима вывода сигнала совпадения (COM0A1:0 = 1).Значение регистра OC0A не поступит на соответствующий внешний контакт порта,если он не сконфигурирован как выход. Сгенерированный сигнал будет иметьмаксимальную частоту fOC0 = fclk_I/O/2, когда в регистр OCR0A записан ноль(0x00). Частота сигнала может быть рассчитана при помощи следующего уравнения:
/>
где переменная N – этокоэффициент предварительного деления (1, 8, 64, 256 или 1024).
Как и в режиме Normal,флаг TOV0 устанавливается каждый раз, когда счётчик досчитывает до MAX ипереходит в ноль.
5.14 Режим FastPWM(быстрый ШИМ)
Микроконтроллер имеетнесколько режимов широтно-импульсной модуляции (ШИМ). По-английски это звучиткак Pulse Width Modulation (PWM).Быстрый ШИМ (fastPWM) выбирается при WGM02:0 =3 или 7. В этом режиме формируется самый высокочастотный сигнал ШИМ. БыстрыйШИМ отличается от других режимов ШИМ тем, что для формирования сигнала счётчикформирует только возрастную последовательность. То есть изменение значениесчётчика имеет вид пилообразного сигнала с односторонним наклоном.
Счёт начинается созначения BOTTOM и заканчивается значением TOP. После этого счётчикперезапускается (снова устанавливается значение BOTTOM). Значение TOP равно0xFF при WGM2:0 = 3.
Если же WGM2:0 = 7,значение TOP определяется содержимым регистра OCR0A. В режиме неинвертирующеговыхода сигнал совпадения (OC0x) сбрасывается в момент совпадения значений TCNT0иOCR0xи перехода к BOTTOM.
В инвертирующем режимесигнал на выходе устанавливается в момент совпадения и перехода в BOTTOM.Благодаря тому, что счётчик работает всегда только в одном направлении, частотасигнала в режиме fast PWM может быть в два раза выше, чем в режиме phasecorrectPWM, который использует пилообразный сигнал с двумя наклонами.
Благодаря высокойчастоте выходного сигнала режим fast PWM хорошо подходит для создания системрегулировки мощности, для построения выпрямителей и цифро-аналоговыхпреобразователей. Высокая частота позволяет применять внешние компоненты(катушки, конденсаторы) небольших размеров, и тем самым, уменьшать общуюстоимость системы.
В режиме fast PWMзначение счётчика увеличивается до тех пор, пока не достигнет значения TOP. Вследующем цикле тактового сигнала таймера счётчик очищается.
Флаг переполнениятаймера/счётчика (TOV0) устанавливается каждый раз, когда счётчик достигаетзначения TOP. Если прерывание разрешено, то вызывается процедура обработкипрерывания, которая может быть использована для обновления уровня совпадения.
В режиме fast PWM модульсовпадения используется для генерации сигнала ШИМ на выходах OC0x. Установкабитов COM0x1:0 = 2 произведёт к генерации на выходе неинвертированного сигналаШИМ. Для генерации инвертированного сигнала ШИМ необходимо установить COM0x1:0= 3. При установке битов COM0A1:0 = 1сигнал на выходе AC0A в момент совпаденияпереключается в противоположное состояние при условии, что бит WGM02 = 1.
Эта опция не доступнадля выхода OC0B. Фактическое значение OC0x поступит на внешний контактмикросхемы только в том случае, если он будет сконфигурирован как выход.
Сигнал ШИМ формируетсяпутём установки (сброса) регистра OC0x в момент совпадения значений OCR0xиTCNT0, и сброса (установки) этого регистра в первом тактовом цикле, послеперезагрузки счётчика (изменении его значения с TOP на BOTTOM). Частота сигналаШИМ на выходе может быть рассчитана при помощи следующего выражения:
/>.
Переменная Nпредставляет собой коэффициент предварительного деления (1, 8, 64, 256 или1024). Отдельно нужно рассмотреть несколько случаев при генерации сигнала ШИМ,когда в регистр OCR0Aзаписывается значение, близкое к предельному.
Если в регистреOCR0Aбудет установлено значение, равное BOTTOM, то выходной сигнал будетпредставлять собой короткий выброс для каждого MAX + 1тактового импульсатаймера.
Если в регистрOCR0Aзаписать значение MAX, то это приведёт к тому, что на выходе будетпостоянно присутствовать либо высокий, либо низкий логический уровень (взависимости от значения битов COM0A1:0).
Частота выходногосигнала в режиме fast PWM (при уровне регулирования 50%) может быть достигнута,если заставить регистр OC0x переключать свой логический уровень при каждомсовпадении (COM0x1:0 = 1).
Сформированный такимобразом сигнал будет иметь максимальную частоту fOC0 = fclk_I/O/2 в том случае,когда в регистре OCR0A записан ноль. Эта особенность позволяет переключатьрегистр OCR0A таким же образом, как в режиме СТС, но при этом использовать всепреимущества двойной буферизации, которая применяется в режиме fast PWM.
5.15 ШИМ, корректный пофазе (PhaseCorrectPWM)
Режимphase correct PWM (WGM02:0 = 1или5). Формированиесигнала ШИМ происходит с большим коэффициентом пересчёта и корректного по фазе.Корректность по фазе обеспечивается благодаря работе счётчика в режимепилообразного сигнала с двухсторонним наклоном.
Счётчик периодическиизменяет направление своего счёта. Сначала он считает от BOTTOM до TOP, затемнаправление счёта меняется, и счётчик считает TOP до BOTTOM. Затем направлениепересчёта снова меняется, и всё повторяется сначала.
Значение TOP равно 0xFFпри WGM2:0 = 1 и определяется регистром OCR0Aпри WGM2:0 = 5.
В режименеинвертирующего вывода сигнал на выходе OCR0x сбрасывается в ноль в моментсовпадения содержимого регистров TCNT0 и OCR0x, если счётчик работает в прямомнаправлении (на увеличение). Значение устанавливается в единицу в моментсовпадения, если счётчик работает на уменьшение.
В режимеинвертированного вывода картина меняется на противоположную. Режимдвухстороннего наклона характеризуется более низкой максимальной частотойвыходного сигнала по сравнению с предыдущим случаем, где применяется пила содносторонним наклоном. Благодаря симметричности по фазе при двустороннемнаклоне такие режимы предпочитаются при создании систем управленияэлектродвигателями.
В режиме phase correct PWMзначение счётчика увеличивается, пока не достигнет значения TOP. Когда значениесчётчика достигает TOP, направление счёта изменяется. Содержимое TCNT0 будетравно TOP в течение одного периода тактового сигнала таймера. Флаг переполнениятаймера/счётчика (TOV0) устанавливается каждый раз, когда счётчик достигаетзначения BOTTOM. Флаг прерывания может использоваться для генерации запроса напрерывание. Такое прерывание будет вызвано каждый раз, когда содержимоесчётчика достигнет значения BOTTOM.
В режиме phasecorrect PWMмодуль совпадения используется для генерации сигнала ШИМ на выходе OC0x. Приустановке битов COM0x1:0 = 3. Установка битов COM0A0 = 1заставляет сигнал навыходе OC0A инвертироваться каждый раз в момент совпадения, если бит WGM02установлен. Эта опция не доступна для вывода OC0B. Фактическое значение OC0xпоступает на внешний вывод порта только в том случае, если он сконфигурированкак выход.
Сигнал ШИМсгенерируется путём сброса (установки) OC0xв момент совпадения содержимогорегистров OCR0xи TCNT0, когда счётчик работает на увеличение, и устанавливается(сбрасывается) в момент совпадения, если счётчик работает на уменьшение.Частота выходного сигнала ШИМ в режиме phase correct PWM может быть вычисленапо следующей формуле:

/>,
Где переменная Nпредставляет собой коэффициент предварительного деления (1, 8, 64, 256, 1024).
Крайние значениясодержимого регистра OCR0A при генерации сигналов ШИМ в режиме phase correct PWMпредставляют собой специальные случаи. Для неинвертирующего режима при записи врегистр OCR0Aзначения BOTTOM на выходе установиться низкий логический уровень.При записи в OCR0Aзначения MAX на выходе установится логическая единица. Дляинвертирующего режима сигнал на выходе будет иметь противоположные значения.

6. Описание системыкоманды
 
6.1 Система команд. Общиесведения о системе команд
В семействе AVR системакоманд у микроконтроллеров разных типов содержат от 89 до 130 команд. Умикроконтроллеров типа 2323, 2343, 2313, 4433, 8515 и 8535 в систему командвходят 118 команд. Эту систему команд будем называть базой.
В табл. 2.1 – 2.13описаны операции, выполняемые по командам базовой системы, и приведены мнемокодыкоманд, используемые при разработке программы на языке AVR Ассемблера. Втаблицах дана сквозная нумерация команд, используемая далее в тексте.
Базовая система командсодержит:
▪ 33 командырегистровых операций, при выполнении которых используются только регистрыобщего назначения (команды №№ 1-33);
▪ 26 команд собращением по адресу в адресном пространстве SRAM (команды №№ 34-59);
▪ 2 команды собращением к регистрам ввода-вывода (команды №№ 60 и 61);
▪ 1 команда собращением к FlashROM (команда № 62);
▪ 22 командыопераций с битами в разрядах регистров общего назначения и регистровввода-вывода (команды №№ 63-84);
▪ 34 командыуправления ходом программы (команды №№ 85-118).
В систему командмикроконтроллеров типа t11, t12, t15, 1200, и t28, у которых нет SRAM, невходят команды с обращением по адресу в адресном пространстве SRAM заисключением команд с мнемокодами LDRd, Z (№ 40) и STZ, Rr (№ 41), по которымпроизводится обращение к регистрам общего назначения и регистрам ввода-вывода сиспользованием косвенной адресации. В систему команд у этих микроконтроллеровне входят также 2 команды регистровых операций (№№ 32 и 33) и две командыуправления ходом программы (№№ 86 и 88). У микроконтроллеров типа 1200 всистему команд не входит также команда с обращением к FlashROM, а умикроконтроллера типа m163, кроме того, с наличием аппаратного умножителя.
Таблица 2№ Операция Мнемокод команды Признаки результата H S V N Z C 1
/>$00→Rd ((Rd)      (Rd) →Rd) CKR Rd 1 2 (Rd) → Rd((Rd)^( Rd) → Rd) TST Rd + + + 3
/>(Rd) → Rd($FF-( Rd) → Rd) COM Rd + + + 1 4 — (Rd) → Rd($00-( Rd) → Rd) NEG Rd + + + + + + 5 (Rd)+1→ Rd INC Rd + + + + 6 (Rd)-1→ Rd DEC Rd + + + + 7 0→( Rd) →C LSR Rd + + + + 8 C←( Rd) ←0 LSL Rd + + + + + + 9 C→( Rd) →C ROR Rd + + + + + 10 C←( Rd) ←C ROL Rd + + + + + + 11 Rd.7→( Rd.6- Rd.0) →C ASR Rd + + + + + 12 Rd.4-7↔ Rd.0-3 SWAP Rd 13 (Rr) → Rd MOV Rd, Rr 14 (Rd)+(Rr) → Rd ADD Rd, Rr + + + + + + 15 (Rd)+(Rr)+C→ Rd ADC Rd, Rr + + + + + + 16 (Rd)-(Rr) → Rd SUB Rd, Rr + + + + + + 17 (Rd)-(Rr)-C→ Rd SBC Rd, Rr + + + + + + 18 (Rd)-(Rr) CP Rd, Rr + + + + + + 19 (Rd)-(Rr)-C CPC Rd, Rr + + + + + + 20 (Rd) ^(Rr) → Rd AND Rd, Rr + + + + 21 (Rd)˅(Rr) → Rd OR Rd, Rr + + + 22
/>/>(Rd)      (Rr) → Rd EOR Rd, Rr + + +
  d=0-31; r=0-31 /> /> /> /> /> /> /> /> /> /> /> /> />
Таблица 3№ Операция Мнемокод команды Признаки результата H S V N Z C 23 $FF→ Rd SER Rd 24 K→ Rd LDI Rd, K 25 (Rd)-K→ Rd SUBI Rd, K + + + + + + 26 (Rd)-K-C→ Rd SBCI Rd, K + + + + + + 27 (Rd)-K CPI Rd, K + + + + + + 28 (Rd) ^K→ Rd ANDI Rd, K + + + 29
/>(Rd) ^K→ Rd CBR Rd, K + + + 30 (Rd) ˅K→ Rd ORI Rd, K + + + 31 (Rd) ˅K→ Rd SBR Rd, K + + + d=16-31(!); K=0-255
Таблица 4№ Операция Мнемокод команды Признаки результата H S V N Z C 32 (Rd+1, Rd)+K→ Rd+1,Rd ADIWRd, K + + + + + 33 (Rd+1,Rd)-K→ Rd+1,Rd SBIW Rd, K + + + + + d=24, 26, 28,30; K=0-63
6.2 Система команд
Таблица 5№ Операция Мнемокод команды № Операция Мнемокод команды 34 (Ячk) → Rd LDS Rd, K 35 (Rr) →Ячk STS k, Rr d, r=0-31; k – адрес из адресного пространства SRAM
  /> /> /> /> /> /> />
Таблица 6№ Операция Мнемокод команды № Операция Мнемокод команды 36 (Яч(X)) → Rd LD Rd, X 37 (Rr) →Яч(X) ST X, Rr 38 (Яч(Y)) → Rd LD Rd, Y 39 (Rr) →Яч(Y) ST Y, Rr 40 (Яч(Z)) → Rd LD Rd, Z 41 (Rr) →Яч(Z) ST Z, Rr 42 1.(Яч(X)) → Rd2. (X)+1→X LD Rd, X+ 43 1.(Rr)→Яч(X) 2.(X)+1→X ST X+, Rr 44 1.(Яч(Y)) → Rd2. (Y)+1→Y LD Rd, Y+ 45 1.(Rr)→Яч(Y) 2.(Y)+1→Y ST Y+, Rr 46 1.(Яч(Z)) → Rd2. (Z)+1→Z LD Rd, Z+ 47 1.(Rr)→Яч(Z) 2.(Z)+1→Z ST Z+, Rr 48 1.(X)-1→X              2. (Яч(X))→ Rd LD Rd, -X 49 1.(X)-1 →X 2.(Rr)→Яч(X) ST -X, Rr 50 1.(Y)-1→Y              2. (Яч(Y))→ Rd LD Rd, -Y 51 1.(Y)-1 →Y 2.(Rr)→Яч(Y) ST -Y, Rr 52 1.(Z)-1→Z              2. (Яч(Z))→ Rd LD Rd, -Z 53 1.(Z)-1 →Z 2.(Rr)→Яч(Z) ST -Z, Rr 54 (Яч(Y)+q) → Rd LDD Rd, Y+q 55 (Rr)→Яч(Y)+q STDY+q, Rr 56 (Яч(Z)+q) → Rd LDD Rd, Z+q 57 (Rr)→Яч(Z)+q STDZ+q, Rr 58 1.(SP)+1→SP              2. (СТЕК)→ Rd POP Rd 59 1.(Rr)-1→СТЕК 2.(SP)-1→SP PUSH Rr d, r = 0-31; q=0-63
Таблица 7№ Операция Мнемокод команды № Операция Мнемокод команды 60 (PrP) → Rd IN Rd, P 61 (Pr) →PrP OUT P,Pr d, r = 0-31; P=0-63=S00-$3F
  /> /> /> /> /> /> />
Таблица 8№ Операция Мнемокод команды
(Z.15-1) – адрес в FlashROM
Z.0 = 0 – мл. байт; Z.0 =1 –ст. байт 62 (Яч(Z))→ R0 LPM
Таблица 9№ Операция Мнемокод команды № Операция Мнемокод команды 63 T→ Rd.b BLD Rd, b 64 Rr.b →T BSTRr, b 65 0→ PrP.b CBI P, b 66 1→PrP.b SBI P, b 67 0→ SREG.b BLSR b 68 1→SREG.b SSET b d, r = 0-31; P=0-31 (!); b= 0-7
  /> /> /> /> /> /> />

Таблица 10№ Операция Мнемокод команды № Операция Мнемокод команды 69 0→I CLI Rd, X 70 1 →I SEI 71 0 →T CLT 72 1 →T SET 73 0→H CLH 74 1 →H SEH 75 0→S CLS 76 1→S SES 77 0→V CLV 78 1→V SEV 79 0→N CLN 80 1→N SEN 81 0→Z CLZ 82 1→Z SEZ 83 0→C CLC 84 1→C SEC
Таблица 11№ Операция Мнемокод команды № Операция Мнемокод команды 85 (PC)+1+k→PC RJMP k 86 (Z) →PC IJMP 87
(PC)+→СТЕК
(SP)-2→SP
(PC)+1+k→PC RCALL k 88
(PC)+1→СТЕК
(SP)-2→SP
(Z) →PC ICALL 89
(SP)+2→ SP
(СТЕК) →PC RET 90
(SP)+2→SP
(СТЕК) →PC
1→I RETI k= -2048 — +2047
  /> /> /> /> /> /> />
Таблица 12№ Условие Мнемокод команды № Условие Мнемокод команды 91 I = 0 BRID k 92 I = 1 BRIE k 93 T = 0 BRTC k 94 T = 1 BRTS k 95 H = 0 BRHC k 96 H = 1 BRHS k 97 S = 02. (X)+1→X BRGE k 98 S = 1 BRLT k 99 V = 0 BRVC 100 V = 1 BRVS k 101 N = 0 BRPL k 102 N = 1 BRMI k 103 Z = 0 BRNE k 104 Z = 1 BREQ k 105 C = 0 BRCC k 106 C = 1 BRCS k 107 C = 0 BRSH k 108 C = 1 BRLO k 109 SREG.b = 0 BRBC b, k 110 SREG.b = 1 BRBS b, k k= -64 — +63; b = 0 — 7
Таблица 13№ Условие Мнемокод команды № Условие Мнемокод команды 111 Rr.b = 0 SBRC Rr, b 112 Rrb = 1 SBRS Rr, b 113 PrP.b = 0 SBIC P, b 114 PrP.b = 1 SPIS P, b 115 (Rd) = (Rr) CPSE Rd, Rr d, r= 0 – 31; P = 0 – 31 (!); b = 0 — 7
Таблица 14№ Операция Мнемокод команды 116 MK → режим энергосбережения SLEEP 117 Перезапуск WDT WDR 118 Нет NOP
6.3 Команды регистровыхопераций
В группу регистровыхопераций входят пересылочные, арифметические и логические операции. Командырегистровых операций описаны в табл. 2, 3 и 4 Машинные коды всех командрегистровых операций имеют формат «слово», команды №№ 1 – 31 выполняются заодин такт, а команды №№ 32 и 33 – за два такта.
При описании операций втабл. 2 – 4 используются следующие обозначения:
▪ Rd, Rr –регистры общего назначения с номерами d и r соответственно;
▪ (Rd), (Rr) –байты в регистрах Rd и Rr соответственно;
▪ Rd.b – разряд b(b = 0 – 7) регистра Rd, бит в разряде Rd.b;
▪ $ — указательшестнадцатеричного кода;
/>/>/>▪ ^, ˅,           - знаки логических операций И, ИЛИ, исключающее ИЛИ соответственно;
/>/>/>▪(   ), (   ), (   ) – знаки операций НЕ, сдвиг кода вправо, сдвиг кода влевосоответственно.
Арифметические операции– сложение и вычитание – могут выполняться с числами без знака в двоичном кодеи с числами со знаком в дополнительном двоичном коде. В отличие отмикроконтроллеров многих других семейств, в которых вычитание сводится ксложению с числом с изменённым знаком (X–Y = X + (-Y)), в микроконтроллерахсемейства AVR вычитание выполняется с помощью аппаратного двоичного вычитателя.
При выполненииарифметических и логических операций кроме кода результата формируются значенияпризнаков результата. При выполнении операций сравнения (команды №№ 18, 19 и27) формируются только значения признаков результата.
Значения признаковрезультата представлены состоянием разрядов регистра состояния SREG (№$33F).Используются шесть признаков результата, которым присвоены имена C (SREG.0),Z(SREG.1) N (SREG.2), V (SREG.3, S (SREG.4) и H (SREG.5). В табл. 2.1 – 2.3признаки, значения которых формируются при выполнении команд, отмечены знаком«+» или указано их название.
При выполнении разныхопераций значение признаков формируется по разным правилам.
Признак C принимаетединичное значение:
▪ при появленииединицы переноса из старшего разряда при выполнении операции сложения (команды№№ 14, 15 и 32);
▪ при появленииединицы займа в старший разряд при выполнении операции сложения (команды №№ 4,16, 17, 18, 19, 25, 26, 27 и 33);
▪ при выходеединицы за пределы разрядной сетки при выполнении операции сдвига (команды №№7, 8, 9, 10 и 11).
Единичное значениепризнака C при выполнении операций сложения и вычитания с числами без знакасвидетельствует о получении неправильного результата операции  вследствиепереполнения разрядной сетки.
Признак Z принимаетединичное значение при получении нулевого результата операции. При выполненииоперации вычитания с учётом займа (команды №№ 17, 19 и 26) Z = 1, если нулевойрезультат получен при выполнении данной и предшествующей операций.
Признак N имеетзначение, равное значению старшего разряда кода результата. При выполненииарифметических операций с числами со знаком и отсутствии переполнения разряднойсетки он представляет знак результата.
Признак V принимаетединичное значение, если при выполнении арифметической операции с числами сознаком возникло переполнение разрядной сетки.
/>/>/>Признак S = NV представляетзнак результата при выполнении арифметических операций с числами со знаком внезависимости от переполнения разрядной сетки. При переполнении разрядной сетки(V = 1) знак результата противоположен значению в старшем разряде кодарезультата.
Признак H принимаетединичное значение при наличии единицы переноса из разряда D3 в разряд D4 привыполнении операции вычитания и при передаче единицы из разряда D3 в разряд D4при выполнении операции кода влево.
 
6.4 Команды собращением по адресу SRAM
По командам собращением по адресу в адресном пространстве SRAM выполняются операциипересылки (копирования) байта между регистром общего назначения и элементом,которому соответствует адрес в адресном пространстве SRAM. Таким элементомможет быть регистр общего назначения (адреса от $00 до $1F), регистрввода-вывода (адреса от $20 до $5F), ячейка памяти в SRAM (адреса от $60 домаксимального адреса в SRAM), ячейка памяти в ERAM(адреса от максимальногоадреса в SRAM +1 до максимального адреса в ERAM).
Команды с обращением поадресу в адресном пространстве SRAM описаны в табл. 2.4 и 2.5.
Машинные коды команд №№34 и 35 имеют формат «2 слова», машинные коды остальных команд – формат«слово». Команды выполняются за 2 такта, а при обращении к ячейкам в ERAM–за 3такта. В случае необходимости в цикл выполнения команды при обращении к ERAM можетбыть введён дополнительный такт ожидания.
В табл.2.4 и 2.5используются следующие новые обозначения:
▪ ЯчА – регистробщего назначения, регистр ввода-вывода, ячейка памяти в SRAM, ячейка памяти вERAM, к которым производится обращение с использованием адреса А из адресногопространства SRAM;
▪ (ЯчА) – байт вЯчА;
▪X, Y, Z – парарегистров общего назначения X (R26, R27), Y (R28, R29), Z (R30, R31)соответственно;
▪ (X), (Y), (Z) –слово в паре регистров X, Y, Z соответственно;
▪ СТЕК – ЯчА, ккоторой производится обращение с использованием адреса, хранящегося в регистре– указателе стека SP;
▪ (СТЕК) – байт вСТЕК, е;
▪ (SP) – кодчисла в регистре SP.
В командах №№ 34 и 35реализуется прямая адресация. Адрес байта (A = k) указывается в коде команды.
В командах №№ 36 – 57реализуется косвенная адресация. Адрес байта находится в паре регистров X, Y илиZ. При выполнении команд №№ 48 – 53 до выполнения пересылки адрес в паререгистров аппаратно уменьшается на единицу. При выполнении команд №№ 54 – 57адрес, по которому производится обращение, равен адресу в паре регистров Y илиZ, увеличенному на единицу q, которое указано в коде команды. Адрес в паререгистров остаётся без изменения.
В командах №№ 58 и 59 вкачестве кода адреса используется код, находящейся в регистре-указателе стека.При запуске микроконтроллера в регистр-указатель стека заносится код числа 0.Для нормальной работы стека в регистр – указатель стека в начале программынеобходимо занести код другого числа. Обычно в качестве такого числа используютстарший адрес в SRAM. Например, для микроконтроллера типа 8515 таким адресомявляется число $025F.
6.5 Команды собращением к регистрам ввода-вывода
По командам собращением к регистрам ввода-вывода выполняются операции пересылки(копирования) байта между регистром общего назначения и регистром ввода-выводас использованием для выбора регистра ввода-вывода его номера ($00 — $3F).Команды с обращением к регистрам ввода-вывода описаны в табл. 6. Машинные кодыкоманд имеют формат «слово». Команды выполняются за один такт.
В табл. 6 используютсяследующие новые обозначения:
▪ PrP – регистрввода-вывода с номером P;
▪ (PrP) – байт врегистре PrP.
При записи мнемокодакоманды вместо конкретного номера регистра может использоваться егосимволическое имя. Все регистры ввода-вывода имеют штатные имена. Умикроконтроллеров разных типов регистры ввода-вывода, имеющие одинаковые имена,могут иметь разные имена. При записи в мнемокодах имён регистров вместо ихномера необходимо использовать версию AVR-Ассемблера для микроконтроллераданного типа.
6.6 Команда собращением к FlashROM
По команде с обращениемк FlashROM выполняется пересылка (копирование) байта из половины ячейки памятив FlashROM в регистр общего назначения R0. Команда описана в табл. 2.7.Машинный код команды имеет формат «слово». Команда выполняется за три такта.
До выполнения командынеобходимо адрес, соответствующий ячейке памяти в FlashROM, в которой хранитсяконстанта, умножить на 2 и записать в пару регистров Z (№№ $30, $31).
При умножении на 2(сдвиг кода влево на один разряд) в младшем разряде регистра ZL ($30)оказывается цифра 0. При нулевом значении младшего разряда выбирается байт измладшей половины ячейки FlashROM. Для выбора байта из старшей половины ячейкинеобходимо число, код которого находится в паре регистров Z, увеличить на 1 сиспользованием команды № 33 с мнемокодом ADIWR30, 1 или ADIWZL, 1.
Запись констант вFlashROM выполняется при программировании микроконтроллера.
6.7 Команды операций сбитами
Команды операций сбитами описаны в табл. 2.8 и 2.9. Машинные коды всех команд имеют формат«слово». Команды №№ 65 и 66 выполняются за 2 такта, остальные команды – за 1такт.
В табл. 2.8используется следующее новое обозначение:
▪ PrP.b – разрядb (b = 0 – 7) регистра ввода-вывода с номером P (P = $00 — $1F (!)), бит в разрядеPrP.b.
По командам №№ 63 и 64выполняется пересылка (копирование) бита между указанным разрядом регистраобщего назначения и разрядом Tрегистра SREG.
По командам №№ 65 и 66устанавливается в требуемое состояние (0 или 1 соответственно) указанный разрядрегистра ввода-вывода, а по командам №№ 67 и 68 – указанный разряд регистраSREG.
При записи мнемокодакоманд №№ 65 и 66 вместо номера регистра (P) может быть указанно егосимволическое имя, а вместо номера разряды (b) –символическое имя разряда. В микроконтроллерахсемейства AVR разряды многих регистров ввода-вывода имеют штатные имена. Этиимена приводятся в тексте при рассмотрении устройств, в которых эти разрядыиспользуются.
В микроконтроллерахнекоторых типов разряды одноимённых регистров с одинаковыми именами имеютразные номера. При использовании штатных имён регистров ввода-вывода в штатныхимён разрядов в них необходимо использовать версию AVR Ассемблера длямикроконтроллера соответствующего типа.
При назначении штатногоимени разряда подразумевалось, что этот разряд принадлежит определённомурегистру ввода-вывода, однако в мнемокоде команд №№ 65 и 66 необходимоуказывать и имя/номер регистра и имя разряда.
Требуемое значение бита(0 или 1) в разрядах регистров ввода-вывода с номерами от $20 до$3Fустанавливается с использованием команд регистровых операций с мнемокодамиCBR (№ 29) и SBR (№ 31) соответственно.
В табл. 10 приведенымнемокоды команд, по которым устанавливаются в определённое состояние (0 или 1)разряды регистра SREG без указания в мнемокоде команды номера разряда.
 
6.8 Команды управленияходом программы
В группу командуправления ходом программы входят команды безусловного и условного переходов,перехода в энергосберегающий режим, перезапуска сторожевого таймера и«холостая» команда.
В табл. 11 описаныкоманды безусловного перехода (№№ 85 и 86), безусловного перехода с возвратом(№№ 87 и 88), возврата из подпрограммы (№89) и возврата из прерывающейпрограммы (№90). В таблице используются следующие новые обозначения:
▪ PC – счётчик команд;
▪ (PC) – кодчисла в счётчике команд;
▪ k – приращениечисла в счётчике команд.
При записи программы наязыке ассемблера в мнемокодах команд №№85 и 87 вместо приращения k указываетсяметка (символический адрес), записанная перед мнемокодом команды, к выполнениюкоторой нужно перейти. Приращение вычисляется и помещается в машинный кодкоманды в процессе ассемблирования.
Машинные коды команд,описанные в табл. 11, имеют формат «слово». Команды безусловного перехода (№№85 и 86) выполняются за 2 такта, команды безусловного перехода а возвратом (№№87 и88) – за 3 такта, команды возврата (№№89 и 90) – за 4 такта.
Группа команд условногоперехода делится на две группы. В командах первой подгруппы в качестве условияиспользуется равенство нулю или равенство единице одного из битов в регистреSREG. Условия и мнемокоды команд первой подгруппы приведены в табл. 12. Еслиусловие выполняется, совершается переход по адресу, который формируется сиспользованием приращения k, указанного в коде команды ((PC) + 1 +k→PC;-64 ≤k≤ 63).
Если условие невыполняется, происходит переход к следующей команде в программе ((PC) + 1→PC).
При записи программы наязыке ассемблера в мнемокоде команд вместо приращения k указывается метка(символический адрес), записанная перед мнемокодом команды, к выполнениюкоторой нужно перейти, если условие выполняется.
Машинные коды командпервой подгруппы имеют формат «слово». При выполнении условия командавыполняется за 2 такта, при выполнении условия – за 1 такт.
Если условие невыполняется, совершается переход к очередной команде в программе ((PC) +1→PC).Если условие выполняется, происходит переход к выполнению команды, следующей заочередной ((PC) + 1 + 1/2→PC). Приращение числа в счётчике команд (1 или2) определяется форматом машинного кода очередной команды (1 слово или 2 словасоответственно).
Машинные коды командусловного перехода второй подгруппы имеют формат «слово». Команды выполняютсяза один такт, если условие не выполняется, за 2 такта, если условие выполняетсяи очередная команда (K1) имеет формат «слово», или за 3 такта, если условие невыполняется и очередная команда (K1) имеет формат «2 слова».

Список литературы
 
1. БеловА.В. Самоучитель разработчика устройств на микроконтроллерах AVR. –Санкт-Петербург, «Наука и техника» 2010 г.
2. http://www.atmel.ru/
3. ATtiny2313 Data Sheet.
4. ГребневВ.В. Микроконтроллеры семейства AVRфирмы Atmel. –М. «ИП РадиоСофт» 2002 г./>


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.