Для эмуляторов необходим файл с расширением . coff (файл конфигурации). Файл содержит привязку к тексту программы на языке Си.



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

Введение в программирование для микроконтроллеров (МК)

Цель работы: Знакомство с архитектурой МК ATmega32, изучение средств программирования в среде Code Vision AVR, средств моделирования в среде AVR Studio 4, программирования регистров портов МК и способов доступа к постоянной памяти МК EEPROM.

Задачи работы:

1) Изучение ядра и встроенной в корпус периферии МК ATmega32

2) Построение и компиляция проекта в Code Vision AVR

3) Запуск .COFF-файла на моделирование в среде AVR Studio 4

4) Написание программных модулей записи/чтения данных из регистров портов МК

5) Написание программных модулей записи/чтения данных из памяти EEPROM МК.

Введение. Понятие микроконтроллера и сфера их применения

Контроллер – это законченное электронное устройство, обычно выполненное в виде платы (плата контроллера) и предназначенное для приема и обработки сигналов от датчиков, а также для управления внешними устройствами на основании результатов обработки принятых сигналов [1].

Микроконтроллер – это программно-управляемая интегральная микросхема, применяемая для построения различных котроллеров [1].

Микроконтроллером  называется интегральная схема, объединяющая в одном кристалле процессор, память и устройства ввода-вывода [2].

Современные средства интеллектуальной техники нацелены на решение весьма широкого круга задач. Конструктивное решение возникающих при этом проблем достигается за счет встроенного в них «мозгового центра» – МК. Естественным образом решаются задачи использования МК в разнообразных специализированных средствах, тем не менее, на современном рынке аппаратных решений (гаджетов) все чаще встречается обычная бытовая техника «интеллектуально усиленная» встроенными системами на базе МК [3].

Архитектура МК ATmega 32

В данной лабораторной работе используется микроконтроллер ATmega32, имеющий следующие характеристики:

· Высокопроизводительные, мало потребляющие AVR 8-разрядные микроконтроллеры

· Развитая RISC архитектура:

- 131 исполняемых команд, большинство за один машинный такт

- 32 рабочих регистра общего назначения

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

- 32К байт внутрисистемно самопрограммируемой FLASH памяти с количеством циклов перепрограммирования до 10 000.

- 1024 байт EEPROM с допустимым количеством циклов стирания записи до 100 000.

- 2К байт внутренней SRAM

· Периферийные функции

- два 8-битных таймера/счётчика с программируемым предделителем и режимом сравнения

- один 16-битный таймер/счётчик с программируемым предделителем, режимом сравнения и захвата

- счётчик реального времени с программируемым генератором

- четыре ШИМ (широтно-импульсная модуляция) генератора

- 8-и канальный, 10-и битный АЦП (аналогово-цифровой преобразователь)

- программируемый USART (для связи с ПК)

- Master/Slave SPI последовательный интерфейс

- Программируемый Watchdog таймер с программируемым генератором

- Встроенный аналоговый компаратор

· Специальные функции

- Reset по включению питания и выключение при снижении напряжения питания

 - Внутренний калиброванный RC генератор

· 32 программируемых вывода вход-выход и 1 вход

· 40 выводной корпус PDIP, 44 выводной корпус TQFP, и 44 контактный MLF

· Напряжение питания:

 - 2.7 В до 5.5 В для ATmega32L (режим пониженного энергопотребления)

- 4.5 В до 5.5 В для Atmega32

· Тактовая частота: 0-8 МГц Atmega32L - 0-16 МГц Atmega32

Блок- схема:

Рис. 1.1 Архитектура МК ATmega32/L

Рис. 1.2 Расположение выводов МК ATmega32/L

Atmega32/L является КМОП (комплементарная структура металл-оксид-полупроводник) 8-битным микроконтроллером построенным на расширенной AVR RISC архитектуре. Используя команды исполняемые за один машинный такт, контроллер достигает производительности в 1 MIPS на рабочей частоте 1 МГц, что позволяет разработчику эффективно оптимизировать потребление энергии за счёт выбора оптимальной производительности.

AVR ядро сочетает расширенный набор команд с 32 рабочими регистрами общего назначения. Все 32 регистра соединены с АЛУ (арифметическо-логическое устройство), что обеспечивает доступ к двум независимым регистрам на время исполнения команды за один машинный такт. Благодаря выбранной архитектуре достигнута наивысшая скорость кода и соответственно высокая производительность в 10 раз превосходящая скорость соответствующего CISC микроконтроллера.

Компилятор Code Vision AVR

Code Vision AVR – это компилятор или интегрированная среда разработки программ для МК семейства AVR фирмы Atmel, предназначенный для использования вместе с отладчиком AVR Studio [3].

Кроме стандартных библиотек языка Си, компилятор Си Code Vision AVR имеет библиотеки для:

- алфавитно-цифровых LCD-модулей;

- температурного датчика LM75 от National Semiconductor;

- часов реального времени PCF8563, PCF8583 от Philips и DS1302, DS1307 от Dallas Semiconductor;

- температурного датчика DS1820/DS18S20 от Dallas Semiconductor;

- SPI;

- задержек;

В результате трансляции программы формируются следующие файлы:

prj – файл проекта Code Vision AVR;

txt – файл комментариев. Это простой текстовый файл, который вы заполняете по своему усмотрению;

c – текст программы на языке СИ;

asm – текст программы на Ассемблере (сформирован Code Vision);

cof – формат для передачи программы в другие системы для отладки;

eep – содержимое EEPROM (формируется одновременно с hex -файлом);

hex – результат трансляции программы;

inc – файл-дополнение к программе на Ассемблере с описанием всех заранее зарезервированных ячеек и определением констант;

lst – листинг трансляции программы на Ассемблере;

map – распределение памяти МК для всех переменных программы СИ;

obj – объектный файл (промежуточный файл, используемый при трансляции;

rom – описание содержимого программной памяти (та же информация, что и в hex-файле, но в виде таблицы);

vec – еще одно дополнение к программе на Ассемблере содержащее команды переопределения векторов прерываний;

cwp – файл построителя проекта. Содержит все параметры, которые вы ввели в построитель.

Все перечисленные выше файлы имеют одинаковые имена, соответствующее имени проекта. Кроме перечисленных выше файлов, директория проекта может содержать несколько файлов с расширением типа c~, pr~ или cw~. Это страховочные копии соответственно файлов c, prj и cwp. То же самое, что файл bak для текстовых файлов.

При написании программы в Code Vision AVR применяют операнды, которые используются при выполнении операций.

Операнд – это константа, литерал, идентификатор, вызов функции, индексное выражение, выражение выбора элемента или более сложное выражение, сформированное комбинацией операндов, знаков операций и круглых скобок [4].

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

В Code Vision AVR выполняются следующие операции:

1. унарные

Унарное выражение состоит из операнда и предшествующего ему знака унарной операции и имеет следующий формат: знак_унарной_операции операнд. В таблице 1 перечислены унарные операции компилятора Code Vision AVR и приведены их знаки.

Таблица 1. Унарные операции компилятора CodeVisionAVR

Знак операции Операция
$<?>$ Арифметическое описание (отрицание и дополнение)
~ Побитовое логическое отрицание (дополнение)
! Логическое отрицание

Таблица 1. (продолжение)

* Разадресация (косвенная адресация)
& Вычисление адреса
++ Инкремент
-- Декремент
sizeof Размер

 

Унарные операции выполняются справа налево.

2. бинарные

Бинарное выражение состоит из двух операндов. Разделенных знаком бинарной операцией, и имеет следующий формат: операнд1 знак_бинарной_операции операнд2.

В отличие от унарных бинарные операции (список приведен в таблице 2), выполняются слева направо.

Таблица 2. Бинарные операции компилятора Code Vision AVR

Знак операции Операция
* Умножение
/ Деление
% Остаток от деления
+ Сложение
- Вычитание
<< Сдвиг влево
>> Сдвиг вправо
> Больше
< Меньше
<= Меньше или равно
>= Больше или равно
== Равно
!= Не равно
& Побитное И
| Побитное ИЛИ
^ Побитное исключающее ИЛИ
&& Логическое И
|| Логическое ИЛИ
, Последовательное вычисление
= Присваивание
*= Умножение с присваиванием
/= Деление с присваиванием
%= Остаток от деления с присваиванием

Таблица 2. (продолжение)

-= Вычитание с присваиванием
+= Сложение с присваиванием
<<= Сдвиг влево с присваиванием
>>= Сдвиг вправо с присваиванием
&= Побитное И с присваиванием
|= Побитное ИЛИ с присваиванием
^= Побитное исключающее ИЛИ с присваиванием

 

Операция побитного логического И (&) сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если оба сравниваемых бита единицы, то соответствующий бит результата устанавливается в 1, в противном случае – в 0.

В Code Vision AVR имеется средство для облегчения разработчику написания программы. Это так называемый мастер – Автоматический генератор программ Code Wizard AVR.

Code Wizard AVR позволяет по заданию разработчика автоматически сгенерировать весь необходимый код для выполнения таких функций, как:

- организация доступа к внешней памяти;

- сброс и исходная идетификация чипа;

- инициализация портов ввода/вывода;

- инициализация внешних прерываний;

- инициализация таймеров/счетчиков;

- инициализация сторожевого (Watchdog) таймера;

- инициализация UART (USART) и прерывания, управляющего буфером последовательной связи;

- инициализация аналогового компаратора;

- инициализация АЦП;

- инициализация LCD-модуля.

При создании нового проекта разработчику сразу будет предложено использовать Автоматический программный генератор Code Wizard AVR. Кроме того, Code Wizard AVR можно запустить на любом этапе работы над проектом.

Эмулятор AVR Studio 4

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

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

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

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

В hex-файле находится определенным способом закодированная программа в машинном коде. Именно этот файл используется программатором для «прошивки» программной памяти МК. Любой программатор поддерживает hex-формат и распознает записанные туда коды автоматически.

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

Для эмуляторов необходим файл с расширением . coff (файл конфигурации). Файл содержит привязку к тексту программы на языке Си.

При создании нового проекта, с помощью мастера проектов мы выбираем тип проекта AVR GCC – это мультиплатформенный компилятор [5]. После чего выбираем отладочную платформу – AVR Simulator. Эмулятор (AVR Simulator) поддерживает практически все существующие МК. Выбрав платформу и модель МК, завершаем работу мастера нажатием кнопки «Finish», в результате чего будут сгенерированы и открыты необходимые файлы.

Когда работа мастера проектов завершена, внешний вид рабочего пространства AVR Studio представлена на рисунке 1.3.

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

Рисунок 1.3. Вид рабочего пространства AVR Studio

Центральная область 1 содержит окно редактирования исходного текста. В этой области каждый файл может либо быть в отдельном окне (как на рисунке), либо может заполнять всю область целиком (если нажать кнопку «Развернуть»). В нижней части 2 центральной области размещаются закладки-ярлычки для быстрого переключения между открытыми файлами.

Область 3 – это окно проекта, в котором в виде древовидной структуры показано содержимое всего проекта.

Область 4 – окно периферийных устройств микроконтроллера. Оно имеет название «I/O View» - просмотр ввода-вывода, т.к. любое периферийное устройство для программиста представлено в виде набора портов ввода-вывода (или регистров ввода-вывода). В этом окне в виде раскрывающихся списков перечислены все аппаратные устройства выбранного микроконтроллера – таймеры, порты, АЦП и т.п. Во время написания исходного текста программы это окно поможет ориентироваться в назначении битов тех или иных регистров управления периферией, но гораздо более важную роль оно играет при отладке.

Окно 5 – это многофункциональное окно вспомогательной информации. По умолчанию оно включает 4 закладки, каждая из которых отвечает за свои сведения:

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

· Message – сообщения. В этой области можно видеть все сообщения IDE: от сведений о загрузке модулей программы до сообщений об ошибках компилятора.

· Find in Files – область результатов поиска по файлам.

· Breakpoints and Tracepoints – точки останова и трассировки. В этой области

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

Наконец, область 6 – это традиционная область панелей кнопок, которые облегчают выполнение многих команд. Выше находится строка меню.

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

Это вспомогательное меню содержит следующие пункты:

· Floating – сделать область «плавающей»

· Docking – «прилепить» область к одному из краев рабочего пространства

· Tabbed Document – оформить область в виде закладки другой области

· Auto Hide – прятать автоматически, т.е. в режимах, когда область не требуется, она будет автоматически убрана с экрана

· Hide – спрятать, т.е. убрать область с экрана. Эта команда равносильна нажатию на кнопочку с крестиком в заголовке.

Окно периферии – это весьма гибко настраиваемое окно отображения ресурсов встроенных периферийных устройств МК. По умолчанию оно разделено на две части: в верхней перечислены наименования периферийных устройств, а в нижней – состояние регистров одного выбранного устройства [6].

На рисунке 1.4 показан вид окна, когда выбран аналоговый компаратор. Выбрать периферийное устройство можно или щелкнув на нем в окне, или выбрав из выпадающего списка в верхней части окна. В нижней части показаны регистры (столбец Name), управляющие аналоговым компаратором, с указанием адреса (столбец Address) регистра (без скобок указан адрес в области портов ввода-вывода, соответствующий регистру, а в скобках – адрес в пространстве ОЗУ). Кроме того, в столбце Value(значение) может быть показано текущее значение числа, хранимого в регистре (во время отладки), а в столбце Bits(биты) графически показаны состояния отдельных битов порта – черными квадратиками показаны единичные значения битов, пустыми (белыми) – нулевые, серым цветом показаны биты, не участвующие в управлении выбранным периферийным устройством.

Рисунок 1.4. Вид окна, когда выбран аналоговый компаратор

В AVR Studio имеются проблемы и ограничения у встроенного в него эмулятора. Все они описаны в соответствующих сопроводительных файлах, но на английском языке, здесь приведены описания наиболее важных моментов [7].

1. Полностью или частично не эмулируются встроенные во все типы МК периферийные аналоговые устройства, а так же TWI и USI.

2. Полностью отсутствует поддержка эмуляции «теневых» регистров у всех МК. Это проявляется, в частности, в том, что в режимах Fast-PWM и Phase-correct PWM значение регистра OCR не обновляется при достижении счетчиком TCNT верхнего значения.

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

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

5. Некоторые биты в регистрах, которые должны сбрасываться в ноль при записи 1, могут сбрасываться и при записи 0.

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

7. В окне Watch значения массивов обновляются не всегда. Чтобы обновить значения массива, наблюдаемого в этом окне, необходимо выполнить «сворачивание» и последующее его «разворачивание».

8. Некоторые типы переменных не отображаются корректно (например, long long).

9. Не реализовано разделение секций кода для эмуляции режимов записи в память программ.

10. Поддерживается только один режим «сна» – Idle mode.

11. WDT поддерживается не для всех моделей МК. Для некоторых моделей корректные интервалы WDT реализовываются только для тактовой частоты 1 МГц. В некоторых случаях при истечении интервала WDT программа не останавливается на точке останова по вектору сброса.

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

13. Эмулятор некорректно обеспечивает работу с портами ввода-вывода, в которых физически недоступна часть битов – все 8 битов могут использоваться в программе.

14. Регистр UDR модуля USART (UART) не может быть модифицирован никаким способом «извне» – ни вручную пользователем, ни при помощи стимуляции портов.

15. Корректная работа с парой «совмещенных» регистров USRC и UBRRH возможна только в том случае, если запись в UBRRH осуществляется только после записи в UBRC.

16. Для всех микроконтроллеров не реализована эмуляция «удвоенной» скорости SPI.

17. Не реализовано отключение периферии при помощи регистра PRR – и «отключенная» периферия продолжает эмулироваться нормально.


Дата добавления: 2018-11-24; просмотров: 286; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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