Гавардская архитектура микроконтроллеров AVR 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Гавардская архитектура микроконтроллеров AVR



Лабораторная работа №1

Знакомство с устройством и принципами работы микроконтроллера семейства AVRATiny 2313

Цель работы: вывод данных в порты ввода-вывода микроконтроллера ATiny 2313

1.Методические указания по подготовке к работе

Содержание работы:

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

1.1. Основные сведения из теории:

Состав микроконтроллеров

Микроконтроллер— микросхема, предназначенная для управления электронными устройствами. Типичный микроконтроллер сочетает в себе функции процессора и периферийных устройств, содержит ОЗУ или ПЗУ. По сути, это однокристальный компьютер, способный выполнять простые задачи.

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

Мировая промышленность выпускает огромную номенклатуру микроконтроллеров. Специализированные контролелры предназначены для применения в какой-либо одной конкретной области. Особый же класс составляют универсальные микроконтроллеры. Они не имеют конкретной специализации и могут применяться в самых различных областях микроэлектроники.

Одна из самых популярных серий универсальных микроконтроллеров – это микроконтроллеры АVR

Микроконтроллер  обычно содержит в своём составе:

1) арифметико-логическое устройство (АЛУ).

2) тактовый генератор;

3) память данных;

4) память программ;

5)  порты ввода-вывода.

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

Устройство микроконтроллера на примере ATtiny 2313

Микросхема ATtiny 2313 представляет собой восьмиразрядный микроконтроллер с внутренней программируемой Flash-памятью размером 2 Кбайт.

Назначение выводов микросхемы ATtiny2313 приведено на рис. 1.1. Блок-схема микроконтроллера ATtiny2313 приведена на рис.1. 2.

Ядро AVR имеет большой набор инструкции для работы с 32 регистрами общего назначения. Все 32 регистра непосредственно связаны арифметико-логическим устройством (ALU), которое позволяет выполнять команду для двух разных регистров за один такт системного генератора. Такая архитектура позволила достигнуть производительности в десять раз большей, чем у традиционных микроконтроллеров, построенных по CISC-технологии.

Рис. 1.1. - Назначения выводов микросхемы ATtiny2313

Микросхема ATtiny2313 имеет следующие особенности:

♦ 2 Кбайт системной программируемой Flash-памяти программ;

♦ 128 байт EEPROM;

♦ 128 байт SRAM (ОЗУ);

♦ 18 линий ввода-вывода (I/O);

♦ 32 рабочих регистра;

♦ однопроводной интерфейс для внутрисхемной отладки;

♦ два многофункциональных таймера/счетчика с функцией совпадения;

♦ поддержка внешних и внутренних прерываний;

♦ последовательный программируемый USART-порт;

Рис. 1.2 - Блок-схема микроконтроллера ATtiny2313

 

♦ универсальный последовательный интерфейс с детектором начала передачи;

♦ программируемый сторожевой таймер с внутренним генератором;

♦ три программно изменяемых режима энергосбережения

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

Рис.1. 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).

Рис. 1.4 - Файл регистров общего назначения микроконтроллеров AVR

 

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

Как показано на рис. 1.4., каждому регистру также соответствует адрес в пространстве памяти данных, где они занимают первые 32 ячейки. Хотя физически регистры не входят в SRAM, такая организация памяти обеспечивает большую гибкость при доступе к регистрам. Указатель косвенного доступа к памяти (один из регистров X, Y или Z) может быть установлен на любой регистр из файла.

Рис. 1.5 - Сдвоенные регистры X, Y, Z

 

Стек, главным образом, используется:

♦ для временного хранения данных;

♦ для хранения локальных переменных;

♦ для хранения адреса выхода из подпрограммы или процедуры обработки прерывания.

Регистр указателя стека всегда указывает на его вершину.

Указатель стека указывает на стековую область в памяти данных (SRAM). В стеке, кроме прочего, сохраняются;

♦ адрес выхода из подпрограммы;

♦ адрес выхода из процедуры обработки прерывания.

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

Указатель стека уменьшается на единицу, когда данные записываются в стек при помощи команды PUSH, и уменьшается на два, когда в стек записывается в адрес возврата из подпрограммы или процедуры обработки прерывания.

Указатель стека увеличивается на единицу, когда данные читаются из стека при помощи команды POP, и увеличивается на два, когда данные извлекаются из стека при выходе из подпрограммы (команда RET) или завершении процедуры обработки прерывания (команда RETI).

Указатель стека во всех микросхемах AVRвыполнен в виде двух 8-разрядных регистров ввода-вывода. Число фактически используемых разрядов для каждой модели микроконтроллеров разное. В некоторых моделях, в том числе и вATtiny2313, объём памяти данных настолько мал, что для указателя стека используется только младший из регистров указателя стека (SPL). Регистр SPHу них отсутствует. Ниже показана структура регистров указателя стека для микроконтроллера ATtiny2313.

 Теперь рассмотрим различные виды памяти микроконтроллера ATtiny2313. Архитектура AVRсодержит два основных вида памяти:

♦ память данных;

♦ память программ.

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

Рис.1. 6 - Карта памяти программ

 

Память программ допускает не менее 10000 циклов записи/стирания. Счётчик команд (PC) микросхемы ATtiny2313 имеет 10 двоичных разрядов и поэтому может работать с адресным пространством в 1К. Микросхема поддерживает режим низкого программирования памяти программ, которое может осуществляться по последовательномуSPIинтерфейсу.

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

 

Память данных SRAM

 

 Всего адресное пространство ОЗУ содержит 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 ри включении и выключении будет изменяться медленно. Это заставляет устройство в течении некоторого времени работать при более низком напряжении, чем минимально допустимое напряжение для данной частоты тактового генератора.

 Порты ввода-вывода

 

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

Настроить разряды порта можно при помощи команд сброса и установки бита SBIи CBI. То же самое касается изменения значения на выходе (если разряд сконфигурирован как выход) или включения/ отключения внутреннего резистора нагрузки (если разряд сконфигурирован как вход).

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

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

 

Рис. 1.7 - Эквивалентная схема входных цепей одного разряда порта ввода-вывода

 

Буква “x” в описании имён регистра означает название порта, сточная буква “n” означает номер разряда. При использовании этого имени в программе вместо этих символов нужно подставлять конкретную букву названия порта и конкретный номер разряда.

Например, PORTB3 – для бита номер 3 порта B, если в документации этот бит назывался PORTxn.

Для каждого порта ввода-вывода в микроконтроллере имеется три специальных регистра:

♦ PORTx – регистр данных;

♦ DDRx – регистр управления;

♦ PINx – регистр непосредственного чтения состояния линий порта.

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

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

 

Рис. 1.8 - Упрощённая схема одной линии цифрового ввода-вывода

 

Конфигурация выводов

Каждый разряд порта связан с тремя разрядами трёх специальных регистров: DDxn; PORTxn; PINxn.

Как уже говорилось:

♦ бит DDxn – это разряд номер n регистра DDRx;

♦ бит PORTxn – это разряд номер n регистра PORTx;

♦ бит PINxn – это разряд номер n регистра PINx.

Бит DDxn регистра DDRx выбирает направление передачи информации соответствующего разряда. Если в DDxn записана логическая единица, разряд Pxn работает как выход. Если в DDxn записан логический ноль, разряд Pxn работает как вход.

Если разряд порта сконфигурирован как вход, установка бита PORTxn в единицу включает внутренний резистор нагрузки. Для отключения резистора нагрузки нужно в PORTxn логический ноль. Сразу после системного сброса все выводы всех портов переходят в третье (высокоимпендансное) состояние.

Если разряд порта сконфигурирован как выход (установка бита PORTxn в единицу), то эта единица появится на выходе порта. Если в разряд PORTxn записан логический ноль, то и на выходе будет ноль.

 

 

Рис.2.1.Макетная плата для микроконтроллера AtTiny2313

 

В состав входят следующие устройства:


1 - микроконтроллер AtTiny2313
2 - кварц
3 - разъем ISP для программирования
4 - разъем UART
5 - универсальный разъем для подключения к портам ввода/вывода
6 - кнопка сброса
7 - кнопки для ввода данных, в данном случаи я их повесил на порт В
8 - разъем питания этого добра
9 - конденсатор
10 - светодиоды, подключены через резисторы номиналом 330 Ом, предназначены для индикации битов порта B

Для того чтобы запрограммировать микроконтроллер нам понадобится программа формирующая файл прошивки. (*.hex) В качестве этой программы компилирующей файл прошивки мы будет использовать CodeVisionAVR

CodeVisionAVR — интегрированная среда разработки программного обеспечения для микроконтроллеров семейства Atmel AVR.

Программа является 32-битовым приложением, которое работает под операционными системами Windows95,98, NT4, 2000 и XP

CodeVisionAVR обеспечивает выполнение почти всех элементов языка Си, которые разрешены архитектурой AVR, с некоторыми добавленными характеристиками, которые реализуют преимущество специфики архитектуры AVR

CodeVisionAVR включает в себя следующие компоненты:

- компилятор Си-подобного языка для AVR;

- компилятор языка ассемблер для AVR;

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

- модуль взаимодействия с отладочной платой STK-500;

- модуль взаимодействия с программатором;

- терминал.

 

Выходными файлами CodeVisionAVR являются:

HEX, BIN или ROM-файл для загрузки в микроконтроллер посредством программатора;

COFF — файл, содержащий информацию для отладчика;

OBJ — файл;

Работа с CodeVisionAVR начинается с создания нового проекта

 

МК должен быть сконфигурирован с помощью визадра под ATtiny2313

 

 

Начинаем с того что создаем новый проект.

File- New

 

На вопрос, что бы будем создавать выбираем - Project

Использовать ли визард – отвечаем -Yes

Откроется окно нового проекта. На закладке Chip выберем нужный МК – в нашем случае это – Attyny2313. Установим рабочую частоту тут же.

Переходим на закладку Ports и подзакладкуPortB. Здесь мы выбираем, порт B его мы сконфигурируем на выход. Напротив каждого бита выберите In\Out так чтобы все выходы были Out

 

Переходим на закладку Ports и подзакладкуPortD. Здесь мы выбираем, порт D его мы сконфигурируем на вход. Проверьте чтобы Биты 0,1,2 стояли на вход – In

 

 

 

 

Далее открываем Меню – Program - Выбираем пункт Generate, SaveendExit.

Далее программа спросит имя файла (*.с) напишите любое название

имя файла (*.prj) напишите любое название – Это и Есть ваш проект

имя файла (*.сwp) напишите любое название

После этого у вас откроется созданный мастером код.

Чтобы до конца создать проект и сделать прошивку для МК (файл *.hex)

Идем в меню Project- Build

Выйдет окно в котором будет информация о компиляции нашего проекта.

Ошибок 0 Предупреждений 0.

Сначала надо прописать библиотеку, которую мы хотим использовать для паузы:

#include<delay.h>

Вставить ее надо ниже  #include<tiny2313.h> вставленной мастером.

Далее надо описать переменные, у нас пока она будет одна. – она будет отвечать за то какой светодиод будет гореть назовем ее – I

Третья строка это и есть описание переменной I - целый тип (integer)

int i;

Мастер сконфигурировал нам порты на вход и выход, теперь мы должны написать сам код нашей программы идем в самый низ кода и ищем строку:

While (1)

{

// Place your code here

};

Это тело программы

 

Сюда мы вставимцикл в котором мы зажигаем светодиоды и обрабатываем нажатие кнопки:

 

While (1)

{

if (PIND.0==0)

for (i=0; i<=7; i++)

  {

  PORTB = 0b00000001 <<i;

delay_ms(1000);

}

}

 

Теперь обсудим то что написали:

while (1) - это цикл который выполняется до выполнения условия прописанного в скобках

именно этот цикл будет бесконечным.

 

if (PIND.0==0) - это наше прерывание оно нам говорит что когда на 0 бите(ноге микросхемы) порта D - напряжение соответствует логическому нулю, выполнить условие идущее дальше в скобках.

 

for (i=0; i<=7; i++) - это цикл выполняющийся от 0 до 7 увеличивая I на 1 единицу каждый шаг.

Т.е. он нам переберет 0,1,2,3,4,5,6,7.

PORTB = 0b00000001 <<i; - записать в порт B - в бинарном виде (0b- приставка бинарного числа) числа 00000001 и сдвинуть справа на лево число разрядов равных i

 

Т.е. каждый цикл мы сдвигаем на 1 место единицу в порте B. Порт B – это всего 8 выходов микросхемы ATtyny2313. 0\1 соответствует нижнему и верхнему логическим уровням т.е. 0\5 в

И при подключении светодиода через резистор 330м – он будет гореть. Т.е. одновременно будет гореть у нас только 1 светодиод.

delay_ms(1000); - задержка для нашего цикла «перебирающего» биты порта B.

время за которое зажигается светодиод 15 мсек, если мы не поставим паузу не заметим кАк гаснет и загорается светодиод.

Как же мы проверим наш проект,до того чтобы паять нашу плату? Для этого мы используем симулятор. Proteus

Знакомство с PROTEUS

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


Кроме этого в пакет Proteus заложена специальная система проектирования и моделирования печатных плат. Программа Proteus умеет симулировать работу таких контроллеров: ARM7, 8051, PIC, AVR, Motorola, BasicStamp. Внутренняя библиотека компонентов имеет различные справочные данные. Она поддерживает МК: 8051, PIC, HC11, AVR, ARM7/LPC2000 и другие широко распространенные процессоры. Вдобавок к этому в программе содержатся более 6000 цифровых и аналоговых моделей всевозможных устройств.


Программа Proteus прекрасно работает с большинством компиляторов и ассемблерами. PROTEUS VSM делает довольно достоверно моделирование и отлаживание весьма сложных устройств, в которых может находиться несколько «МК» разных семейств в одном устройстве!


Необходимо учитывать и понимать, что любое моделирование электронных схем не может, абсолютно точно повторяет работу реального устройства. Но для общего отлаживания, какого-либо алгоритма работы «МК», этого вполне будет достаточно. Программа PROTEUS имеет большую библиотеку электронных компонентов, а отсутствующие модели можно сделать самостоятельно. В случае, когда какой-либо компонент не программируемый, то на сайте производителя скачать его SPICE модель, и добавить в подходящий корпус.


Программа Proteus состоит из 2 основных модулей:

 

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


2) ARES - это графический редактор печатных плат со встроенным автотрассировщиком ELECTRA, автоматической расстановкой компонентов на печатной плате и отличным менеджером библиотек.


Программа PROTEUS имеет отличные возможности:

 

COMPIM - этот компонент позволяет вашему виртуальному устройству подключиться к РЕАЛЬНОМУ COM-порту вашего ПК.

USBCONN - этот инструмент позволяет подключиться к реальному USB порту компьютера.

Открываем программу.

 

Нажимаем на левой панели маленькую букву «Р»

 

Откроется менеджер добавляющий элементы в проект.

В строке поиска Keywords – пишем «2313» и программа предложит те элементы в которых содержится эта цифра.

Выбираем ATtyny2313 – на панели показан будет тип корпуса и схема элемента- нажимаем –ок.

 

Получится вот такая картина, по аналогии добавляем светодиоды и 1 резистор и button (кнопку)

Резисторы – выбираем категорию Resistors – в столбце Descriptionвыбираем резистор с сопротивлением 1КОм (1К ОНМ)

Светодиоды-В строке поиска Keywords – пишем «led»и выбираем светодиод

 

 

 

Добавляем с TerminalsMode питание(Powers) и землю (Ground)

 

 

Добавлять элементы следует в ComponentMode.

 

Такая картина у вас должна была получиться, соединяем наши элементы согласно схеме.

Чтобы соединить элементы надо выбрать в левом верхнем углу стрелку, далее выбрать угол одного элемента и соединить с углом второго эелемента.

 

 

Далее нам понадобиться файл *.hexкоторый мы получил от компиляции нашей программы в CVAVR.

2 раза кликнем по нашему контроллеру левой кнопкой.

 

В строке programfiles – выбираем наш файл *.hexнажимаем ок.(фал находитсяв той же папке где вы сохранили ваш проектCodeVisionAVR в директории exe)

 

Внизу проекта нажимаем Play.

Наша схема изменится появятся красные и синие квадратики соответствующие нижнему \ верхнему лог уровню. Теперь можно нажать кнопкой мыши - на пиктограмме кнопки (button).

И наш контроллер начнет выполнять программу.

 

Выглядеть будет так. При нажатии кнопки с паузой в 1 сек будут зажигаться последовательно светодиоды с 0 по 7 соответстующим битам порта B.

 

Порядок выполнения работы

1. Получить задание у преподавателя

2. Разработать алгоритм

3. Разработать программу в CodeVisionAVR

4. Скомпилировать файл прошивки

5. Спроектировать макетную плату в PROTEUS

6. Загрузить файл (*.hex) в PROTEUS и запустить симуляцию в проекте.

Оформление отчета

Отчет должен содержать:

а) формулировку цели работы,

б)схему устройства

в) код программы в CodeVisionAVR

г)схема проекта в PROTEUS

д) Выводы по работе

 

 

 

Список использованной литературы

1) М.Б. Лебедев. CodeVision AVR. Пособие для начинающих. Додэка XXI, 2008. 592 с.

 

Содержание:

1.Методические указания по подготовке к работе

1.1. Основные сведения из теории:

Состав микроконтроллеров

Устройство микроконтроллера на примере ATtiny 2313

Гавардская архитектура микроконтроллеров AVR

Понятие стека

АЛУ – арифметико-логическое устройство

X-регистр, Y-регистр и Z-регистр

Системная перепрограммируемая Flash-память программ

Память данных SRAM

Порты ввода-вывода

Использование портов для цифрового ввода-вывода

Порядок выполнения работы

Оформление отчета

 

 

Лабораторная работа №1

Знакомство с устройством и принципами работы микроконтроллера семейства AVRATiny 2313

Цель работы: вывод данных в порты ввода-вывода микроконтроллера ATiny 2313

1.Методические указания по подготовке к работе

Содержание работы:

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

1.1. Основные сведения из теории:

Состав микроконтроллеров

Микроконтроллер— микросхема, предназначенная для управления электронными устройствами. Типичный микроконтроллер сочетает в себе функции процессора и периферийных устройств, содержит ОЗУ или ПЗУ. По сути, это однокристальный компьютер, способный выполнять простые задачи.

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

Мировая промышленность выпускает огромную номенклатуру микроконтроллеров. Специализированные контролелры предназначены для применения в какой-либо одной конкретной области. Особый же класс составляют универсальные микроконтроллеры. Они не имеют конкретной специализации и могут применяться в самых различных областях микроэлектроники.

Одна из самых популярных серий универсальных микроконтроллеров – это микроконтроллеры АVR

Микроконтроллер  обычно содержит в своём составе:

1) арифметико-логическое устройство (АЛУ).

2) тактовый генератор;

3) память данных;

4) память программ;

5)  порты ввода-вывода.

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

Устройство микроконтроллера на примере ATtiny 2313

Микросхема ATtiny 2313 представляет собой восьмиразрядный микроконтроллер с внутренней программируемой Flash-памятью размером 2 Кбайт.

Назначение выводов микросхемы ATtiny2313 приведено на рис. 1.1. Блок-схема микроконтроллера ATtiny2313 приведена на рис.1. 2.

Ядро AVR имеет большой набор инструкции для работы с 32 регистрами общего назначения. Все 32 регистра непосредственно связаны арифметико-логическим устройством (ALU), которое позволяет выполнять команду для двух разных регистров за один такт системного генератора. Такая архитектура позволила достигнуть производительности в десять раз большей, чем у традиционных микроконтроллеров, построенных по CISC-технологии.

Рис. 1.1. - Назначения выводов микросхемы ATtiny2313

Микросхема ATtiny2313 имеет следующие особенности:

♦ 2 Кбайт системной программируемой Flash-памяти программ;

♦ 128 байт EEPROM;

♦ 128 байт SRAM (ОЗУ);

♦ 18 линий ввода-вывода (I/O);

♦ 32 рабочих регистра;

♦ однопроводной интерфейс для внутрисхемной отладки;

♦ два многофункциональных таймера/счетчика с функцией совпадения;

♦ поддержка внешних и внутренних прерываний;

♦ последовательный программируемый USART-порт;

Рис. 1.2 - Блок-схема микроконтроллера ATtiny2313

 

♦ универсальный последовательный интерфейс с детектором начала передачи;

♦ программируемый сторожевой таймер с внутренним генератором;

♦ три программно изменяемых режима энергосбережения

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

Гавардская архитектура микроконтроллеров AVR

Чтобы максимально ускорить работу и сделать возможным параллельное выполнение нескольких операций, микроконтроллеры AVR используют Гавардскую архитектуру (рис.1 3).

Рис.1. 3 - Блок-схема архитектуры AVR

 

Такая архитектура предусматривает отдельную память и отдельную шину адреса как для программы, так и для данных.

Каждая команда из пяти программ выполняются за один машинный цикл с использованием многоуровневой конвейерной обработки. В тот момент, когда очередная команда выполняется, следующая команда считывается из программной памяти. Такая концепция позволяет выполнять по одной команде за один такт системного генератора. Программный сегмент памяти физически представляет собой встроенную перепрограммируемую Flash-память.

Файл регистров быстрого доступа содержит 32 восьмиразрядных регистра общего назначения, доступ к которым осуществляется за один такт системного генератора. Это позволяет арифметико-логическому устройству (ОЛУ) осуществлять большинство своих операций за один такт.

Типичная операция АЛУ выполняется следующим образом: из регистрового файла читаются два операнда, выполняется операция. Результат сохранения опять же в файле регистров. Все эти три действия выполняются за один цикл тактового генератора.

Шесть из этих 32 регистраторов могут использоваться как три 16-разрядных регистра-указателя косвенной адресации. Эти сдвоенные регистры могут использоваться для адресации данных в адресном пространстве ОЗУ. Такая организация даёт возможность программного вычисления адреса.

Один из этих регистров-указателей может также использоваться в качестве указателя адреса данных, размещённых в памяти программ (Flash-памяти). Эти дополнительные составные 16-разрядные регистры именуются X, Yи Z.

АЛУ поддерживает арифметические и логические операции между двумя регистраторами или между константой и регистратором. В АЛУ также могут выполняться операции с отдельными регистраторами. После каждой арифметической операции обновляется регистр статуса для того, чтобы отразить информацию о её результ



Поделиться:


Последнее изменение этой страницы: 2021-01-08; просмотров: 270; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.115.195 (0.265 с.)