РефератыКоммуникации и связьВнВнутренняя организация микроконтроллеров AVR

Внутренняя организация микроконтроллеров AVR

Внутренняя организация микроконтроллеров AVR

Микроконтроллеры AVR выпускаются фирмой Atmel и предназначены для свободного использования в проектируемой аппаратуре.


Общие характеристики микроконтроллеров AVR следующие:


· Напряжение питания – 3-5 В


· Количество регистров общего назначения – 32


· Наличие внутренних ОЗУ, памяти программ, энергонезависимой памяти


· Поддержка интерфейсов USART(RS 232), SPI(I2
C)


Архитектура микроконтроллера АТ9052313



Микроконтроллеры AVR являются 8-разрядными. Это означает, что все действия по выполнению арифметических операций, работы с портами, таймерами, интерфейсами выполняются побайтно.


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


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


128 байт оперативной памяти, предназначены для хранения данных пока на МК подано питание.


128 EEPROM предназначены для хранения информации после выключения питания МК.


1 Кб памяти программ это флэш-память, в которой находится программа, в соответствии с которой работает МК, а также размещаются таблицы данных (если они необходимы). Эта информация записывается в память на этап программирования и в отличии от EEPROM в процессе работы контролера не может быть изменена.


Счетчик программ – это счетчик 16-разрядный, который начинает считать после включения питания МК и содержание этого счетчика используется для выбора следующего для исполнения команды из памяти программ. Выбранная команда считывается из память программ и помещается в регистр инструкции, а декодер инструкции преобразует информацию в действие.


15 линий ввода/вывода физически являются ножками МК, объединенные в 2 порта ввода/вывода – порт В и порт D. Порт В является 8-разрядным, порт D является 7-разрядным.


Обращение к линиям ввода/вывода может быть как индивидуальным, так и порту в целом, т.е. каждая из линий порта ввода/вывода может быть настроена как на ввод информации, так и на вывод, а данные выводятся и считываются из порта как по битам, так и по байтам.


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


16-разрядный таймер-счетчик предназначен для подсчета тактов, импульсов либо импульсов, поступающих на вход Т1
. 8-разрядный таймер-счетчик считает до 256 с коэффициентом предделения от 1 до 1024.


USART – аппаратно реализуемый интерфейс приема/передачи между двумя устройствами в старт/стоповом режиме.


Алгоритм передачи данных и формат пакета передаваемых данных полностью совпадает с интерфейсом RS-232. однако, контролер выдает лишь логическую 1 или 0, а для сопряжения с двухполярным интерфейсом RS-232 необходимо дополнительно использовать соответствующий преобразователь полярности. С помощью этого интерфейса можно передавать информацию со скоростью от нескольких Кбит до 1 Мбит в двух направлениях одновременно.


SPI-модуль в данном МК он предназначен лишь для программирования и является синхронным интерфейсом, в отличии от USART. В более сложных МК он предназначен для синхронной передачи информации между несколькими МК со скоростью до 4 Мбит/с.


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


Аналоговый компаратор предназначен для сравнения напряжений, поданных на 2 соответствующих входа МК. Если напряжение на положительном входе больше, то происходит соответствующее прерывание.


WATCHDOG таймер – это таймер, отсчитывающий интервал времен, в течении которого МК находится в спящем режиме. По окончании счета МК выходит из спящего режима. Спящий режим часто используется в устройствах, которые работают от аккумуляторов, когда нужно снизить энергопотребление и продлить время работы без подзарядки.


Регистр статуса – это регистр, в котором отображается результат выполнения большинства команд МК. Этот регистр представляет собой совокупность битов флагов, каждый из которых установлен в 1 либо сбрасывается в 0, в результате выполнения соответствующей команды.


Флаги в регистре статуса обновляются автоматически, как только выполняется соответствующая команда, обновляющая эти флаги.


Сравнительный анализ современных микроконтролеров представлен ниже:




Система команд микроконтроллеров серии
AVR представлена ниже:
Арифметические конструкции МК
AVR

ADDRd, Rr - суммирование содержимого регистра Rd с содержимым регистра Rr. Результат помещается в Rd.


ADDR16, R17


Если результат больше 256, то флаг переноса – это флаг С в регистре статуса. Регистры Rd и Rr – любые из диапазона 0Rd, Rr31


ADCRd, Rr – суммирование с переносом. Содержимое Rd добавляется содержимому Rr и значению флага переноса С.


Пусть R1615


R172


ADCR16, R17


SUBRd, Rr – вычитание без переноса, т.е. Rd= Rd – Rr.


SUBIRd, k – вычитание константы k из содержимого регистра Rd, т.е. Rd= Rd – k.


SBCRd, Rr – вычитание с переносом, т.е. Rd= Rd – Rr – c.


ANDRd, Rr – логическая "И" содержимого двух регистров Rd и Rr.


R16=8=00001000


R17=00001010


ANDR16, R17=00001000


ANDIRd, k – логическая "И" содержимого регистра Rd и константы k.


ORRd, Rr – логическая "ИЛИ" содержимого двух регистров.


ORIRd, k - логическая "ИЛИ" содержимого регистра Rd и константы k.


EORRd, Rr– исключающая "ИЛИ".


COMRd – побитная инверсия Rd.


NEGRd – изменение знака числа.


SBRRd, k – установить биты в регистре.


Пример. Установить нулевой и третий биты в регистре R17.


SBR R17,0b00001001


SBR R17,9


SBR R17,$09 (0x09)


Устанавливать биты в регистре можно только для регистров 16 – 31.


CBRRd, k – очистить биты в регистре.


INCRd – увеличить на 1 содержимое регистра Rd.


DECRd – уменьшить на 1 содержимое регистра Rd.


CLRRd – очистка содержимого регистра Rd.


SERRd – установить в 1 все биты регистра.


MULRd, Rr – умножение без знака.


MULSRd, Rr – умножение со знаком.


Инструкции ветвления


RJMPk – относительный переход на метку k. Переход осуществляется в пределе 2000 команд от места вызова.


RJMP Res


- - - - - - -


Res. ADD R16, R17


IJMP – косвенный переход на адрес, хранящийся в регистровой паре Z.


В микроконтроллере AVR с

уществуют 3 регистровые пары X, Y, Z. Регистровые пары используются при косвенной адресации и позволяют осуществлять переход в пределах 216
.


JMPk – переход на метку k в пределах 4 млн. инструкций.


RCALLk – относительный вызов подпрограмм, т.е. переход на метку k, с которой начинается вызываемая подпрограмма. При этом подпрограмма должна заканчиваться командой RET.


ICALL – косвенный вызов подпрограммы, начальный адрес которой хранится в регистровой паре Z.


CALLk – вызов подпрограммы удаленной на расстояние до 64 000 команд от места вызова.


RETI – возврат из прерывания.


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


CPSERd, Rr – сравнить содержимое двух регистров и пропустить следующую команду, если значения в эти регистрах одинаково.


CPRd, Rr – сравнить содержимое двух регистров.


CPIRd, k – сравнить содержимое регистра с константой.


BREQk – переход на метку, если выполнилось равенство.


BRNEk – переход на метку, если значение


BRCSk – флаг переноса установлен, т.е. перейти на метку, если установлен флаг переноса.


BRCCk – перейти на метку, если флаг переноса сброшен в 0.


BRSHk – перейти на метку, если равно или больше.


CP R16 R17


BRSH RCS


---------------


RES -------


BRLOk - перейти на метку, если меньше.


BRMIk – перейти на метку, если установлен флаг отрицательного числа.


BRPLk – перейти на метку, если флаг отрицательного числа сброшен в 0.


BRGEk – перейти на метку, если больше или равно с учетом знака.


BRLTk – перейти на метку, если меньше с учетом знака.


BRHSk – перейти на метку, если флаг внутреннего переноса установлен.


BRHCk– перейти на метку, если флаг внутреннего переноса сброшен в 0.


BRTSk – перейти на метку, если флаг Т установлен.


BRTCk – перейти на метку, если флаг Т сброшен в 0.


BRVSk – перейти на метку, если флаг перевыполнения установлен.


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


BRIEk – перейти на метку, если разрешены прерывания.


BRIDk – перейти на метку, если прерывания запрещены.


SBRCRd, b – пропустить следующую команду, если бит b в регистре Rd сброшен в 0.



SBRSRd, b – пропустить следующую команду, если бит b в регистре Rd установлен.


SBICP, b – пропустить следующую команду, если бит b в порту Р сброшен в 0.


SBISP, b – пропустить следующую команду, если бит b в порту Р установлен.


BRBSS, k – перейти на метку k, если флаг S в регистре статуса установлен.



BRBCS, k – перейти на метку k, если флаг в регистре статуса сброшен в 0.


Команды работы с битами.


LSLRd – логический сдвиг влево. В результате логического сдвига влево старший бит в сдвигаемом регистре перемещается во флаг переноса С, все биты регистра сдвигаются на 1 бит влево, а в младший бит записывается 0.


LSRRd - логический сдвиг вправо.


ROLRd – циклический сдвиг влево.


При циклическом сдвиге влево, содержимое сдвигаемого регистра сдвигается на один бит влево, при этом старший бит переходит во флаг переноса B, а то что было во флаге С до этого записывается в младший бит записываемого регистра.


RORRd– циклический сдвиг вправо.


ASRRd – арифметический сдвиг вправо.


SWAPRd – перестановка тетрад в регистре.


SBIP, b – установить бит b в порту Р.


CBIP, b – сбросить бит b в порту Р.


BSTRd, b – установить либо сбросить флаг Т в регистре статуса в зависимости от того установлен или сброшен бит в регистре Rd.


BLDRd, b – загрузить в бит b регистра Rd содержимое флага Т.


SEC – установить в 1 флаг переноса.


CLC – сбросить в 0 флаг переноса.


SEN – установить в 1 флаг отрицательного числа.


CLN – сбросить в 0 флаг отрицательного числа.


SEZ – установить в 1 флаг 0.


CLZ – сбросить в 0.


SEI – разрешить прерывания.


CLI – запретить прерывания.


SES – установить в 1 флаг числа со знаком.


CLS – сбросить в 0 флаг числа со знаком.


SEV - установить в 1 флаг переполнения.


CLV – сбросить в 0 флаг переполнения.


SET – установить в 1 флаг
Т.


CLT – сбросить в 0 флаг Т


SEH – установить в 1 флаг внутреннего переноса.


CLH – очистить флаг внутреннего переноса.


NOP – пустая команда.


SLEEP – переход в режим пониженного энергопотребления.


WDR – сброс сторожевого таймера.


Команды передачи данных


MOVRd, Rr – копирование содержимого регистра Rr в Rd.


LDIRd, k – загрузить константу kв регистр Rd. Команда справедлива только для регистров с 16 по 31.


LDSRd, k – прямая загрузка из оперативной памяти значений хранящихся по адресу kв регистре Rd.


LDRd, x – загрузка из ОЗУ значений хранящихся по адресу, который предварительно записан в регистровую пару х, значение в регистр Rd


# LDI R26, 0X01


LDI R27, 0X02


LDR17, x


LDRd, x+ (LDRd, y+ LDRd, z+) – косвенная загрузка в регистр Rd значений из ОЗУ, адрес которой записан в регистровой паре х с последующим инкрементом адреса.


LDRd, -x – загрузка в регистр Rd значений из ОЗУ, адрес которых предварительно записан регистровой паре х с прединкрементом адреса.


STSk, Rr – прямое сохранение содержимого регистра Rr в ячейку ОЗУ, адрес которой указан константой k.


STS 0X69, R17


STx, Rr (STY, RrSTY, Rr) – сохранение содержимого регистра Rr в ячейку оперативной памяти, адрес которой предварительно записан в регистровой паре х.


STx+, Rr (STY+, RrSTZ+, Rr) – сохранение содержимого регистра Rr в ячейку оперативной памяти с адресом, записанным в регистровую пару х и последующим инкрементом адреса.


ST -x, Rr (ST -Y, RrST -Z, Rr) - сохранение содержимого регистра Rr в ячейку оперативной памяти с адресом, предварительно записанным в регистровую пару х и преддектрементом адреса.


LDDRd, Y+q (LDDRd, Z+q) – загрузка из памяти в регистр Rd, когда адрес хранится в регистровой паре и указывается смещение адреса q.


INRd, P – загрузка из порта Р его содержимого в регистр Rd.


OUTP, Rr – вывод в порт Р содержимого регистра Rr.


PUSHRd – занесение содержимого регистра в стек.


POPRd – извлечение из стека.


LPM – загрузка значений из памяти программ.


LPMRd, Z+ - загрузка из памяти программ с постинкрементом.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Внутренняя организация микроконтроллеров AVR

Слов:1901
Символов:14662
Размер:28.64 Кб.