Микропроцессоры универсальные

Автор работы: Пользователь скрыл имя, 08 Апреля 2014 в 12:27, курсовая работа

Краткое описание

Различные выполняемые функции и сферы применения обусловили специализацию СБИС. По данному признаку достаточно условно их можно разделить на следующие классы:
СБИС с аппаратной реализацией алгоритмов обработки данных;
микропроцессоры универсальные;
микропроцессоры сигнальные;
микроконтроллеры, включая интерфейсные схемы для образования мультипроцессорных систем;
микросхемы памяти: статические и динамические;
программируемые логические интегральные схемы (ПЛИС).

Содержание

ВВЕДЕНИЕ 2
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 5
1.1.Архитектура МК attiny13 6
1.2.Процессорное ядро МК attiny13 11
1.3.Способы адресации 15
1.4.Энергонезависимая память данных 15
1.5.Порты ввода/вывода 20
2.РАЗРАБОТКА МК УСТРОЙСТВА 22
2.1.Индикатор температуры тела 32
2.2. Принципиальная схема 33
3. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ МКУ 36
3.1.Интегрированная среда программирования 38
3.2.Программа на языке Ассемблера 42
Список используемой литературы 45
ЗАКЛЮЧЕНИЕ 50

Вложенные файлы: 1 файл

КП пояснительная записка.doc

— 1.20 Мб (Скачать файл)

Система тактирования (Clock System). Данную систему можно сравнить с сердечно-сосудистой системой 
Модуль обработки прерываний (Interrupt Unit)

 

Периферийные устройства:

Порты ввода/вывода 
EEPROM память 
USB (только в xMega), USART, I2C, SPI, JTAG интерфейсы 
Сторожевой таймер, Таймер/Счетчик (с функцией ШИМ генератора, захвата/сравнения и т.д.) 
АЦП, ЦАП (только в xMega), Аналоговый компаратор 
Модули внешнего прерывания (External Interrupts)

Одним из плюсов AVR микроконтроллеров является возможность использования периферийных устройств в различных совместных режимах работы, что очень часто упрощает задачу разработчика. Также в AVR встроена система сброса и отслеживания уровня питающего напряжения (System Control and Reset), обеспечивающая нормальный старт микроконтроллера и в случае необходимости, надежное завершение работы.

Регистры управления/состояния периферийных устройств находятся в области памяти данных (Data memory), между регистрами общего назначения и оперативной памятью, что обеспечивает высокое быстродействие в работе с периферией. Разработчик, естественно, имеет полный доступ к данным регистрам (I/O Registers).

Что необходимо чтобы заработал микроконтроллер?

Здесь вырисовываются три базовых направления:

  • написать программу (программирование). Для того чтобы написать программу/алгоритм, по которому будет действовать микроконтроллер нам понадобится интегрированная среда разработки для AVR микроконтроллеров, в состав которой входит редактор кода/текста, компилятор, компоновщик (linker) и пр. утилиты. Среда разработки позволяет сэкономить уйму времени и сил в процессе создания проложения.
  • схемотехника. Одной лишь программы недостаточно чтобы микроконтроллер заработал, ему также требуется минимальный обвес (набор внешних электронных устройств), для обеспечения микроконтроллера напряжением питания и тактирующим сигналом, чтобы как минимум заработало ядро микроконтроллера.
  • программатор. Устройство для записи откомпилированной программы (прошивки) в память микроконтроллера. Самый часто-используемый метод записи прошивки в память микроконтроллера является метод ISP (In-System Programming), для чего и нужен ISP connector. Также весьма популярными методами записи прошивки в память микроконтроллера являются HVP (High-Voltage Programming) и запись прошивки через JTAG-интерфейс.

 

 

 

 

1.3. Способы адресации.

Все микроконтроллеры AVR семейства поддерживают 8 способов адресации для доступа к различным областям памяти данных (РОН, РВВ, ОЗУ).

В действительности способов адресации всего два:

  1. прямая адресация;
  2. косвенная адресация.

 

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

Прямая адресация

При прямой адресации адреса операндов содержатся непосредственно в слове команды. В соответствии со структурой памяти данных существуют следующие разновидности прямой адресации: прямая адресация одного РОН, прямая адресация двух РОН, прямая адресация РВВ, прямая адресация ОЗУ.

Прямая адресация одного регистра общего назначения

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

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

Прямая адресация двух регистров общего назначения

Этот способ адресации используется в командах, оперирующих одновременно с двумя регистрами общего назначения. При этом адрес регистра-источника содержится в разрядах 9, 3…0 (5 бит), а адрес регистра-приемника в разрядах 8…4 (5 бит) слова команды.

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

Прямая адресация регистра ввода/вывода

Данный способ адресации используется командами пересылки данных между регистром ввода/вывода и регистровым файлом – IN и OUT. В этом случае адрес регистра ввода/вывода содержится в разрядах 10, 9, 3…0 (6 бит), а адрес РОН – в разрядах 8…4 (5 бит).

Прямая адресация ОЗУ

Как следует из названия, данный способ используется при обращении ко всему адресному пространству памяти данных. Естественно, этот способ адресации не поддерживается микроконтроллером AT90S1200.

В системе команд микроконтроллеров семейства имеется только две команды, использующие этот способ адресации. Это команды пересылки байта между одним из РОН и ячейкой ОЗУ – LDS иSTS. Каждая из этих команд занимает в памяти программ два слова (32 бита). В первом слове содержится код операции и адрес регистра общего назначения (в разрядах с 8-го по 4-й). Во втором слове находится адрес ячейки памяти, к которой происходит обращение.

Косвенная адресация

При косвенной адресации адрес ячейки памяти (для AT90S1200 – регистра) находится в одном из индексных регистров X, Y и Z. В зависимости от дополнительных манипуляций, которые производятся над содержимым индексного регистра, различают следующие разновидности косвенной адресации: простая косвенная адресация, относительная косвенная адресация, косвенная адресация с преддекрементом и косвенная адресации с постинкрементом.

Простая косвенная адресация

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

Микроконтроллеры поддерживают 6 команд (по 2 для каждого индексного регистра) простой косвенной адресации: LD Rd, X/Y/Z, Rd (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8…4 слова команды.

 

 

Относительная косвенная адресация

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

Соответственно микроконтроллера поддерживают 4 команды относительной косвенной адресации (две для регистра Y и две для регистра Z): LDD Rd, Y+q/Z+q (пересылка байта из ОЗУ и РОН) и ST Y+q/Z+q, Rr (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8…4 слова команды, а величина смещения – разрядах 13, 11, 10…0. Поскольку под значение смещения отводится только 6 бит, оно не может превышать 64.

Косвенная адресация с преддекрементом

При использовании команд косвенной адресации с преддекрементом содержимое индексного регистра сначала увеличивается на 1, а затем производится обращение по полученному адресу.

Микроконтроллеры семейства поддерживают 6 команд (по 2 для каждого индексного регистра) косвенной адресации с преддекрементом: LD Rd, - X/ -Y/ -Z (пересылка байта из РОН в ОЗУ).Адрес регистра общего назначения содержится в разрядах 8…4 слова

Косвенная адресация с постинкрементом

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

Микроконтроллеры семейства поддерживают 6 команд (по 2 для каждого индексного регистра) косвенной адресации с постинкрементом: LD Rd, X+/Y+/Z+ пересылка байта из ОЗУ в РОН) и STX+/Y+/Z+, Rd (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8…4 слова команды.

 

1.4. Энергонезависимая память данных.

Как уже было сказано, микроконтроллеры AVR имеют в своем составе энергонезависимую память (EEPROM). Объем этой памяти колеблется от 64 байт до 512 байт в старших моделях. EEPROM-память расположена в своем адресном пространстве и так же, как и ОЗУ, организована линейно.

Организация доступа

Для обращения к EEPROM-памяти используются три регистра: регистр адреса, регистр данных и регистр управления. Все эти регистры, а также их использование подробно рассматриваются в этом пункте.

Регистр адреса

В регистр адреса загружается адрес ячейки, к которой будет производиться обращение. В моделях микроконтроллеров с объемом EEPROM-памяти до 256 байт регистр адреса реализован на одном РВВ (регистр ввода/вывода) – EEAR (EEPROM Addres Register), расположенном по адресу $IE ($3E). В моделях микроконтроллеров с объемом EEPROM-памяти, равным 512 байт, для адресации всего адресного пространства требуется уже девять разрядов, поэтому регистр адреса в них реализован на двух РВВ – EEARH (старший байт адреса) и EEARL (младший байт адреса). Эти регистры расположены по адресам $IF ($3F) и $IE ($3E) соответственно.

Все перечисленные регистры доступны как для записи, так и для чтения. При этом содержимое разрядов 7…1 регистра EEARH, разумеется, игнорируется. 

Регистр данных

Регистр ввода/вывода, являющийся регистром данных EEPROM-памяти, называется EEDR (EEPROM Data Register), а расположен он по адресу $ID ($3D). При записи в этот регистр загружаются данные, которые должны быть помещены в EEPROM по адресу, находящемуся в регистре EEAR.

Регистр управления

Как следует из названия, данный регистр используется для управления доступом к EEPROM-памяти.

 Этот регистр,  который называется EECR (EEPROM Control Register), расположен по адресу $IC ($3C). Разные модели предоставляют неодинаковые возможности по управлению процессами записи/чтения в EEPROM, поэтому состав управляющих разрядов в регистре EECR зависит от конкретной модели микроконтроллера.

Таким образом, процедура записи одного байта в EEPROM-память состоит из следующих этапов:

1.      Дождаться готовности EEPROM к приему новых данных (ждать, пока не сбросится флаг EEWE регистра EECR).

2.      Загрузить байт данных в регистр EEDR, а требуемый адрес – в регистр EEAR (EEARH:EEARL).

3.      Установить в «1» флаг EEMWE регистра EECR. Причем для выполнения этой операции необходимо в том же машинном цикле записать «0» в разряд EEWE.

4.      В течение 4 машинных циклов после установки флага EEMWE записать в разряд EEWE регистра EECR лог: «1».

Длительность цикла записи составляет 2…4 мс, в зависимости от напряжения питания микроконтроллера (2 мс при Vcc = 2,7 В). По окончании цикла записи разряд EEWE аппаратно сбрасывается, после чего программа может начать запись следующего байта.

Процедура чтения данных из EEPROM гораздо проще, чем процедура записи. После загрузки требуемого адреса в регистр EEAR (EEARH;EEARL) программа должна установить в «1» разряд EERE регистра EECR. Когда запрошенные данные будут находиться в регистре данных EEDR, произойдет аппаратный сброс этого разряда.

Меры предосторожности при работе с EEPROM

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

1. Обычная процедура записи в EEPROM требует некоторого минимального напряжения питания; если напряжение питания ниже этой величины, запись не может быть выполнена.

2.  Микроконтроллер сам может выполнять команды некорректно, если напряжение питания будет ниже некоторой величины.     

Чтобы избежать повреждения данных, хранящихся в EEPROM, достаточно воспользоваться одним из трех следующих решений:

  1. Удерживать микроконтроллер в состоянии сброса все время, пока напряжение питания находится ниже нормы. Это решение реализуется внешней схемой защитного сброса, называемой также детектором пониженного напряжения питания (Brown-out Detector).
  2. Удерживать микроконтроллер в «спящем» режиме (Power Down), пока напряжение питания находится ниже нормы. Поскольку в этом режиме микроконтроллер не может выполнять никаких команд, такое решение эффективно защищает служебные регистры EEPROM от непреднамеренной записи.
  3. Хранить константы во FLASH-памяти программ, если они не должны меняться во время работы программы. Микроконтроллер не может самостоятельно производить запись в FLASH-память, соответственно, при понижении напряжения питания ее содержимое не будет повреждено.

 

1.5. Порты ввода/вывода.

Каждый микроконтроллер содержит порты ввода-вывода, к которым, можно подключить какое либо устройство, будь это светодиод или кнопка. В некоторых AVR микроконтроллерах некоторые порты ввода-вывода можно сконфигурировать как аналоговые порты ввода-вывода, например АЦП (Аналого-цифровой преобразователь), ШИМ (Широтно-импульсная модуляция).  
Порты ввода-вывода AVR микроконтроллера Attiny13:

Как видно на картинке, у микроконтроллера Attiny13, 6 портов ввода-вывода (PB0 – PB5) и 2 ножки по питанию (VCC, GND). Но, первая ножка микроконтроллера Attiny13 (порт PB5), по умолчанию не порт ввода-вывода, а сброс (Reset) микроконтроллера. Его можно переключить в порт ввода-вывода специальным фьюз битом (RSTDISBL), но тогда микроконтроллер не будет поддерживать внутрисхемное программирование (по SPI интерфейсу).

Информация о работе Микропроцессоры универсальные