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

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

📆13.10.2011   ✒️galrad   🔎33.725   💬9  

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

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

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


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

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


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

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


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


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


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


        В программе появились новые команды и строчки. Мы изучим их в процессе отладки.
        А сейчас вернемся в 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, что даст вам болше возможностей для самостоятельного творчества.

        Камрад, рассмотри датагорские рекомендации

        🌼 Полезные и проверенные железяки, можно брать

        Опробовано в лаборатории редакции или читателями.




         

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

        Нравится

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

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

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

         

         

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

         

        Схема на Датагоре. Новая статья Програмирование в 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

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

        Datagor

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

        zud

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

        VIDIMEC

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

        lexus-83

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

        lexus-83

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

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

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