В начало | Зарегистрироваться | Заказать наши киты почтой
 
 
 
 

Програмирование в AVR Studio 5 с самого начала. Часть 4

📆13 октября 2011   ✒️galrad   🔎33.367   💬9  

Сегодня рассмотрим программу “бегущих огней” и “бегущих теней”. Примеры “бегущих огней” можно найти почти в любой обучающей литературе. Чтобы получить “бегущие огни” на выходах порта, нужно последовательно переключать один бит

“Бегущая тень” получается при инверсии “бегущих огней”. В принципе сложностей никаких нет – и вам под силу сделать это самостоятельно.

Мы же попробуем усложнить задачу и объединить в одной программе “бегущие огни” и “бегущие тени”, сделать их непрерывными т.е. рисунок светящихся огоньков будет переходить из конца в начало, а еще включим функцию реверса огней т.е нажав на кнопку сможем “двигать” огоньки в обратном направлении.
Проект в Proteus будет выглядеть так:


файлы проекта:
🎁attiny2313_led_2.rar  26.22 Kb ⇣ 125

Программа:
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.


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

Должно выглядеть примерно так:
“бегущий огонек”: 🎁beg_og1.wmv  1.01 Mb ⇣ 85


“бегущая тень”: 🎁beg_ten1.wmv  878.09 Kb ⇣ 80


“бегущая полоска”: 🎁beg_polos1.wmv  831.7 Kb ⇣ 67


Программа “бегущих огней” написанная несколько иначе:
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.


В программе появились новые команды и строчки. Мы изучим их в процессе отладки.
А сейчас вернемся в IDE AVR Studio 5 и рассмотрим более подробно некоторые функции. Сначала копируем или пишем программу в редактор. Компилируем программу нажимая F7 или кликаем по среднему значку панели сборки проекта:

Назначения клавиш слева - направо:
Сборка проекта (Build)
Сборка решения (Build Solution) F7
Отмена (Cancel)

По результатам сборки в окне Output, будет предоставлен отчет о процессе компиляции, а в Solution Explorer будут показаны файлы полученные в результате сборки. Программа создает несколько файлов .hex, .lss, .map, .obj. Файл .hex для программирования микроконтроллера, .lss содержит подробный листинг программы и отчет о компиляции, который можно изучить, если дважды кликнуть по этому файлу, .map файл показывает карту оперативной памяти и задействованные в программе регистры.


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

Отладка программы может выполняться в режимах симуляции и эмуляции.
Симуляция не требует специальных отладочных средств и проводится непосредственно в самой программе. Эмуляция предполагает подключение отладочных плат или программаторов, и позволяет наблюдать процесс отладки наглядно сразу в “железе”. Повторюсь, что для AVR Studio 5 можно самому собрать аналог STK500, весьма мощный и функциональный программатор-отладчик.
Мы будем выполнять отладку в режиме симуляции. Для управления процессом симуляции существует панель отладки (Debug Toolbar)

Назначение кнопок панели отладки указаны в таблице

В процессе отладки можно наблюдать за изменениями значений переменных в окне Locals

Контролируя значения переменных, можно понять логику программы.
Для трассировки программы (пошаговой отладки) предназначена (AVR Debug Toolbar) – панель отладки AVR.

Назначение кнопок панели указаны в таблице

Мы уже пользовались опцией просмотра состояния процессора, еще раз посмотрим функции этого окна.

Параметры состояния процессора перечислены ниже

В этом окне, а так же отдельно можно посмотреть текущее состояние регистров общего назначения и 16-битные регистры X,Y,Z.

Окно просмотра памяти позволяет наблюдать, а при необходимости и модифицировать все виды памяти.

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

Для контроля и управления регистрами ввода-вывода существует окно просмотра периферии IO View

В этом окне можно включать или выключать конкретные биты регистров ввода-вывода, имитируя нажатие на кнопку или активируя встроенное устройство микроконтроллера. Единичка записанная в бит обозначена темным квадратиком, светлый (пустой) квадрат означает ноль. Мы можем произвольно включать и отключать биты регистров.
Теперь вернемся к нашим бегущим огонькам.
Начало в принципе знакомое и повторяется с предыдущих программ, появилась новая строчка:
Инициализация стека.

Что такое стек? Зачем он нужен?

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

Входим в режим трассировки F11, смотрим в параметрах состояния процессора строчку Stack Pointer, красной строчкой выделен адрес 0х00DF, кликнем по F11, два раза. Адрес верхушки стека стал равен 0х0074, т.е. мы инициализировали стековую память по адресу 0х0074. В режиме отладки, мы можем инициализировать любой участок ОЗУ, просто 2 раза кликнув по строчке Stack Pointer и вручную набрав нужный нам адрес.

У стековой памяти есть еще оно полезное свойство, мы можем произвольно записать значение регистра общего назначения в стек c помощью команды push. И наоборот записать значение из стека в регистр общего назначения командой pop.
команда push – записывает значение РОН в стековую память по адресу, установленному в указателе стека, и вычитает из этого адреса единицу.
команда pop – записывает в РОН значение стековой памяти по адресу, установленному в указателе стека, и добавляет к этому адресу единицу.

Обратите внимание, что первая строка (Program Counter) стала равна 2 – это адрес программной строки, которая сейчас будет выполнена. (Program Counter) сокращенно PC – счетчик команд, это регистр в котором значение в процессе выполнения линейной программы инкрементируется, но при выполнении команд перехода значение PC может резко меняется. Для того, чтобы выполнение программы продолжить с нужной нам стоки, можно вместо метки записать выражение PC+/-N.
где, N - число строк перехода;
знаки, +/- обозначают переход вверх или в низ.
Например программу задержки можно записать без меток, таким образом:

dec temp1
brne PC-1

dec temp2
brne PC-3

dec temp3
brne PC-5
ret


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

Итак, мы рассмотрели основные функциональные окна AVR Studio 5 и написали несколько программ. Как вы убедились программа достаточно проста по структуре и интуитивно понятна.
Для программирования микросхем рекомендую собрать аналог STK5000, который незаменим в случаях, когда неправильно прошиты фьюзы (биты конфигурации).
В последующих статьях рассмотрим внутреннюю структуру контроллеров AVR, и особенности программного управления. Акцент будет перенесен на особенности написания програм в ассемблере, уже выходя за рамки контроллера ATTINY2313, что даст вам болше возможностей для самостоятельного творчества.
 

Читательское голосование

Нравится

Статью одобрили 9 читателей.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.
 

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

 

 

Связанные материалы

 

Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 3... Мы научились включать и выключать светодиоды, а как сделать, чтобы они сами заморгали? Понятно,...
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 2... Пишем первую программу!Большинство начинают с мигания светодиодов, и мы не исключение. Если...
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 8... Перейдем к изучению встроенных таймеров. Изучение прерываний и особенно таймеров в...
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 6... Продолжим разбор теоретических основ, без которых невозможно полноценное создание программ....
Схема на Датагоре. Новая статья Программирование микроконтроллеров в AtmelStudio 6. Часть 2. Одна программа на разных языках.... Для радиолюбителей, которые до определенного времени не использовали микроконтроллеры в своих...
Схема на Датагоре. Новая статья Грызём микроконтроллеры. Урок 2. CodeVision и С... Предлагаю продолжить изучение микроконтроллеров… Второй урок будет посвящен по большей части...
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 5... Для того чтобы писать более сложные программы, нужно хорошо представлять структуру и...
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 1... Каждый человек, который только начинает осваивать программирование микроконтроллеров, да и вообще...
Схема на Датагоре. Новая статья Программирование точных часов с применением алгоритма Брезенхама (Bresenham's Algorithm)... В свое время меня заинтересовала возможность реализации точного хода часов программно. Алгоритмы...
Схема на Датагоре. Новая статья Модуль ИК дистанционного управления ПК на микроконтроллере ATTiny26 для перелистывания презентаций. ИК-клавиатура на 2 кнопки... Привет всем датагорцам! Возникла у меня в рабочем порядке проблемка. Есть неплохой проектор на...
Схема на Датагоре. Новая статья Использование МК ATMega163, ATMega163L, ATMega16 в Arduino IDE... Популярная среда разработки Arduino IDE привлекает большим количеством готовых библиотек и...
Схема на Датагоре. Новая статья Анатомия микроконтроллеров ATmega - 3. Прерывания.... Итак, наши светодиоды мигают, но мы не можем никак повлиять на программу, давайте добавим в схему...
 

Комментарии, вопросы, ответы, дополнения, отзывы

 

<
Читатель Датагора

FlintOFF

<
Читатель Датагора

vadeg

<
Читатель Датагора

Datagor

<
Читатель Датагора

zud

<
Читатель Датагора

zud

<
Читатель Датагора

VIDIMEC

<
Читатель Датагора

lexus-83

<
Читатель Датагора

lexus-83

Добавить комментарий, вопрос, отзыв 💬

Камрады, будьте дружелюбны, соблюдайте правила!

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
 
 
В начало | Зарегистрироваться | Заказать наши киты почтой