Среда программирования Algorithm Builder. Algorithm Builder fo avr, Начинаем Графический ассемблер Программирование на алгоритм билдер скачать торрент

Графическая среда программирования для разработки приложений под микроконтроллеры с архитектурой AVR.

Algorithm Builder представляет собой мощный инструмент, позволяющий провести полный цикл по созданию и проверке программного кода. Среда включает в себя: графический редактор, симулятор микрочипа для отладки алгоритма, компилятор и внутрисхемный программатор для загрузки кода в кристалл. Программа представляет собой отечественный аналог Ассемблера и подходит как для опытных разработчиков, так и для тех, кто только начинает осваивать прошивку устройств.

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

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

Основное окно позволяет размещать необходимые объекты и изменять их, вставлять, перемещать и т.п., как в любом графическом редакторе. В отдельной части экрана в виде таблицы формируется окно с перечнем всех констант и переменных, освобождая, таким образом, алгоритм от дополнительных записей. Для настройки параметров периферийных устройств (UART, SPI, ADC, таймеры) предусмотрен особый элемент с раскрывающимся оконным интерфейсом. Набор инструкций, обеспечивающих выбранные параметры работы устройства, самостоятельно формирует компилятор. Кроме этого поддерживается автоперекодировка ANSI-кодов Windows в коды русскоязычного буквенно-цифрового ЖКИ. Программа поддерживает широкий спектр микроконтроллеров семейств: ATtiny, ATmega, AT90.

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

Режим мониторной отладки на ядре с помощью еще одного адаптера (все схемы имеются в документации к софту) позволяет отслеживать внутреннее состояние реального кристалла в любой точке останова. Для связи контроллера с компьютером по выбору пользователя выделяется всего один вывод. Отладка On Chip debug применяется к любому типу микросхем, имеющему SRAM-память.

Несмотря на свои явные достоинства, Algorithm Builder малоизвестен в радиолюбительской среде. Отчасти это объясняется тем, что до 2010 года среда визуального программирования была платной, бесплатная демоверсия ограничивала код до двух килобайт. Сегодня ПО распространяется абсолютно свободно. Папка с установленной программой может копироваться на другие носители и работать портативно. К софту прилагается руководство по использованию. В статье рассматривается ряд простейших работ и приведены схемы программаторов для USB- и COM- портов.

Авторами программы Algorithm Builder является группа отечественных программистов под руководством народного умельца Геннадия Леонидовича Громова из Нижнего Новгорода. Программа развивается и по сей день, добавляются новые функции, на сайте автора появилась небольшая подборка библиотек.

Интерфейс программы Algorithm Builder и руководство пользователя представлены на русском и английском языках.

Программное обеспечение работоспособно в операционных системах Microsoft Windows 95, 98, 2000, NT, ME, XP, Vista и 7.

Распространение программы: бесплатная

Думаю, в наше время нет радиолюбителя, который никогда не сталкивался с микроконтроллерами. Рано или поздно, но это происходит. Когда я в первый раз увидел схему с микроконтроллером, тут же закрыл страницу браузера, с мыслью: "А, все равно не соберу". Но время шло, схем с применением микроконтроллеров становилось все больше, и я все-таки решил начать. На деле все оказалось совсем не таким сложным, как я думал.

Для начала давайте разберемся: что вообще такое микроконтроллер (МК)? По сути, это миниатюрный компьютер, предназначенный для выполнения простейших задач. Все необходимое для работы микроконтроллера заключено в одном корпусе. В микроконтроллере имеется различная периферия - порты ввода\вывода, таймеры, интерфейсы связи и т.д. Микроконтроллер имеет три вида памяти, это RAM (оперативная память), FlashROM (Память программы), EEPROM (энергонезависимая память).

Главное отличие микроконтроллера от обычной микросхемы - это то, что микроконтроллер работает не по жесткой логике, установленной на заводе, а программируется. Программа, классически пишется в специальной среде на компьютере на одном из языков программирования, после чего переводится на машинный язык(компилируется) и записывается в память контроллера. В этом курсе все будет немного по-другому - программа будет не писаться, а буквально рисоваться в виде блок-схемы. Благодаря такому подходу программа выглядит более наглядно, а время на разработку программы сокращается в 3-5 раз, по сравнению с классическими приемами программирования.

Algorithm Builder - среда программирования

Algorithm Builder производит полный цикл разработки, начиная от ввода алгоритма, включая процесс отладки и заканчивая записью программы в память.

Начнем с краткого обзора интерфейса программы

Главное меню

  • Файл. Служит для открытия, сохранения, закрытия проектов и отдельных алгоритмов, а так же выхода из программы.
  • Редактировать. Действия, связанные с редактированием алгоритма: вырезать, копировать, выделить и т.д
  • Отображение. Переключение алгоритм/таблица с переменными(о ней ниже) + шаблоны операций и условий.
  • Поиск. Тут пояснять не нужно.
  • Элементы. Алгоритм рисуется из специальных элементов: Текст, Вершина, Поле, Метка, Условие, Вектор б/у (безусловного) перехода, Настройщик. Со всеми ними мы познакомимся в процессе обучения. В меню находится еще несколько важных пунктов: Деактивировать, Макро, Прерывания. Деактивировать - данный компонент не будет компилироваться. Макро - для создания макросов. Прерывания - содержит список названии всех прерываний микроконтроллера. Об этой функции вы узнаете в следующих уроках, сейчас лишь скажу, что это чрезвычайно важная и необходимая для работы вещь.
  • Программа. Действия, связанные с программой - компиляция (перевод на машинный язык), симуляция работы программы, чтение памяти контроллера (Flash и EEPROM) и т.д.
  • Опции. Настройки проекта и среды.
  • ?. Информация о Algoritm Builder и справка.

Панель инструментов

В пояснениях не нуждается. При наведении курсора на элементы панели всплывают подсказки.

Открытый проект

Тут есть особенность. Нельзя открыть два проекта одновременно.Чтобы открыть/создать новый проект нужно закрыть старый. После открытия проекта вы можете открыть/создать лишь отдельный файл-алгоритм. Файл проекта имеет расширение.alp, а отдельный файл-алгоритм имеет расширение.alg

Работа с переменными и константами

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

Огромное число меток, благодаря которым возможны переходы от одной части программы к другой, сильно загромождают код, и наглядность программы теряется. В Algorithm Builder переходы осуществляются намного проще - стрелкой (вектором) . Но переходы по именованным меткам так же возможны.

Симуляция работы программы

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

Отладка

Algorithm Builder обладает системой мониторной отладки на кристалле (On Chip debug) которая позволяет наблюдать содержимое памяти реального микроконтроллера в заданных точках. При этом для связи микроконтроллера с компьютером используется всего одна ножка микроконтроллера, причем по выбору пользователя. Мониторная отладка может быть применена практически к любому микроконтроллеру. Это программный вариант протокола debugWIRE.

Так почему же Algorithm Builder малоизвестен среди радиолюбителей? Во-первых, до 2010 программа была платной. Сегодня ПО распространяется абсолютно свободно. Во-вторых, отсутствие официальной поддержки программы. Вы не найдете ни одного апнота производителя в котором бы использовался Билдер. Интернет ресурсы, посвященные данной программе, можно пересчитать по пальцам.

Стоит немного рассказать о необходимых материалах и инструментах

Первое что понадобится - это паяльник . Основной инструмент радиолюбителя. Мощность паяльника должна быть в приделах 30-60 Вт. Почему нельзя больше? Мощный паяльник нагревается сильней, и повреждает дорожки платы и применяемые детали. Да и паять им не так удобно - такой паяльник намного больше и тяжелее.

Для того, чтобы загрузить программу в микроконтроллер нужен программатор - в простейшем варианте состоит всего из нескольких резисторов и диодов (на порт LPT и COM). Если у Вас на компьютере нет порта COM либо LPT, USB программатор можно заказать на , DealExtreame или (Поисковой запрос"avr programmer"; стоит примерно 4-6$). О выборе и сборке программатора я напишу в следующем уроке.

Материалы статьи подготовлены на кафедре «Автоматика, Информатика и Системы Управления» (АИиСУ) Московского Государственного Индустриального Университета (ГОУ МГИУ) .
(С 2011 года МГИУ носит название - ФГБОУ ВПО "МГИУ").
Авторы: Крюков А.И., Шубникова И.С., Тройков С.М.

Кафедра АИиСУ уже более 35 лет готовит профессионалов в области разработки и эксплуатации электронных, микропроцессорных, компьютерных, робототехнических, мехатронных и информационных систем управления для автомобильной и аэрокосмической техники, машиностроения и бизнеса. Научно-исследовательская работа сотрудников кафедры ведется в областях, связанных с разработкой систем поддержки принятия решений на основе технологий искусственного интеллекта, анализа и синтеза процессов управления сложными системами, контроля и интеллектуального выявления сбоев аппаратуры. Важным направлением научной деятельности кафедры является проведение исследований в области автоматических и электронных систем транспортных средств.
Существует большое количество всевозможных приложений для написания управляющих программ для МК фирмы Atmel - это среды разработки и отладки на языках низкого уровня (например, бесплатный пакет AVR Studio для разработки программ на языке AVR Assembler), среды разработки на языках высокого уровня (такие как среда WinAVR для разработки программ на С-подобном языке) и есть даже графическая среда разработки и отладки программного обеспечения под названием "Algorithm Builder".

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

Разработка программного обеспечения в среде Algorithm Builder сводится к формированию таких блоков задач, размещению их на плоскости и установлению между ними связей из условных и безусловных переходов.

Дабы не переписывать весь мануал по работе со средой Algorithm Builder советую прочитать его самостоятельно, тем более, что приложение отечественного производства и содержит подробнейшее описание на русском языке на основе примеров по работе с ним. Основываясь на личном опыте, можно с уверенностью сказать, что данного мануала (кстати, далеко не объемного - всего на 20-30 мин. изучения) вполне хватает, чтобы полностью понять и разобраться в данном программном продукте.

Скачать Algorithm Builder можно по адресу http://algrom.net/russian.html . А процесс разработки управляющей программы можно посмотреть по ссылке . Таким образом, представим далее готовую программу в описанной среде разработки с подробнейшими комментариями к ней.

Для начала необходимо выбрать тип кристалла (в нашем случае Atmega8) в меню Опции/Опции проекта и там же задать тактовую частоту 8000000 Гц (8 МГц). Далее выполняем сброс кристалла при запуске (Элементы/Прерывания/Reset). После чего инициализируем стек, выбрав Элементы/Настройщик…/Stack Pointer (SP), откроется окошко с которым нужно будет просто согласиться, нажав "ОК" (рис. 2).

Рис. 2. Настройщик стека

Следующим этапом следует инициализировать приемопередатчик USART (не стоит удивляться появлению буквы «S» в аббревиатуре – это более современный вариант UART, отличающийся от него возможностью передавать/принимать данные не только в асинхронном режиме, но и в синхронном) путем выбора меню Элементы/Настройщик…/USART. В открывшемся окошке (рис. 3) в разделе Receiver ставим галочки напротив Enable (включаем приемник данных) и Complete interrupt enable (разрешаем прерывания по окончании приема данных), далее ставим галочку напротив Double Speed, задаем размер символа Character Size: 8 – bit и выставляем скорость передачи данных Baud Rate = 9615 bps (когда нажмете на выбор скорости передачи данных в меню следует выбирать 9600 bps, 9615 bps получается в связи с пересчетом тактовой частоты на 8 МГц).


Рис. 3. Настройщик USART

Основное тело программы будет состоять из последовательности проверок управляющих кодов (листинг №1). Идея в том, что ПК будет присылать по UART код операции, а МК принимать его и вырабатывать соответствующие управляющие воздействия на привод лопастей вентилятора и сервопривод. Всего таких кодов будет три (сами коды можно придумать абсолютно любые):

  • $31 - включить привод лопастей вентилятора;
  • $20 - выключить привод лопастей вентилятора;
  • $A1 - обращение к сервоприводу.

  • Если с первыми двумя кодами все понятно, то с третьим не все так просто - $A1 - это только команда обращения к сервоприводу, далее необходимо получить еще код угла поворота. Экспериментальным путем было установлено, что он колеблется в приделах от $05AF до $154F. При чем отсылать с ПК и соответственно принимать со стороны МК будем начиная с младшего байта. Так же будем запрещать прерывания по приему данных по USART на время исполнения команды - иначе может получиться "каша" из данных.

    Листинг №1

    На листинге №2 приведен код подпрограммы задержки (Delay). Временная задержка необходима для точной и полной отработки команды и формируется путем зацикливания программы на N циклов (методом проб и ошибок мы подсчитали, что в нашем случае наиболее удачное число циклов 84FF в 16-тиричной системе счисления).

    Листинг №2

    Окончание приема данных по UART вызывает прерывание USART_Receive_Complete (если оно в данный момент не запрещено в основном теле программы), которое в коде можно задать через меню Элементы/Прерывания/ USART_Receive_Complete. В теле обработчика следует сохранить все используемые в нем регистры в стек, а в конце обработчика обратно их восстановить из стека. Так же в этом обработчике можно получить байт статуса (регистр UCSRA) для проверки данных на ошибки и, естественно, сами данные из регистра UDR (листинг №3).

    Листинг №3

    Угол поворота сервопривода зависит от ширины подаваемого на него импульса при сохранении периода постоянным (период 20 мс, а длительность управляющего импульса от 0,8 до 2,2 мс, хотя для разных сервоприводов эти значения могут немного отличаться) для этого нам и понадобится подпрограмма отработки угла поворота сервопривода (листинг №4). Время управляющего импульса и время паузы будем задавать аналогично подпрограмме задержки. Как мы уже писали выше, экспериментальным путем для частоты кристалла 8 МГц мы определили, что время импульса задается кодом в приделах от $05AF до $154F. Таким образом, зная время всего периода – $9E3C (определили так же экспериментально), можно рассчитать время паузы как разницу между длительностью периода и длительностью импульса. Остается только аналогично подпрограмме задержки отработать последовательно время импульса и время паузы, а затем повторить такой сигнал несколько раз (в нашем случае мы повторили сигнал $10 раз, т.е. 16 раз в десятичной системе счисления)

    Листинг №4

    После написания кода (прорисовки алгоритма) управляющей программы необходимо ее откомпилировать и прошить в микроконтроллер. Компиляцию программы можно произвести нажатием Ctrl+F9 либо через меню Программа/Компилировать. В случае успешной компиляции появится информационное окно в котором будет указан объем занятой памяти МК.

    Далее необходимо прошить результат компиляции (файл с расширением *.hex без приписки «EE_» вначале, лежащий в той же папке, что и исходник программы) в контроллер. Это можно сделать с помощью бесплатной утилиты AvrProg, входящей в так же бесплатный пакет AVR Studio. Скачать ее можно с сайта mymcu.ru либо с atmel.com (англоязычный сайт).

    Помимо утилиты для прошивки МК потребуется еще и программатор. Его можно либо купить (простые версии стоят относительно недорого) либо спаять самостоятельно.

    Рис. 4. Схема LPT-программатора
    Самый простой из мне известных – LPT-программатор, но он соответственно потребует наличие порта LPT на компьютере, что на данный момент становится редкостью. Идея программатора проста и состоит в соединении порта LPT с интерфейсом ISP и линией Reset контроллера напрямую (рис. 4).

    Другой вариант программатора для самостоятельной сборки – USB-программатор (схема показана на рис. 5), он конечно сложнее, но в последствии может оказаться значительно более удобным. Тем не менее есть одно «но» – для его сборки все равно потребуется LPT-программатор, правда однократно. Он будет необходим для прошивки управляющего контроллера самого программатора с целью прошивки FUSE-битов. Необходимо, чтобы были запрограммированны (установленны в «0») биты SPIEN, CKOPT и SUT0. Обычно МК, идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Так же желательно (но не обязательно) запрограммировать (установить в «0») бит BODEN. Остальные биты должны быть незапрограммированны (установленны в «1»). Для этого может потребоваться приложение Codevision AVR V2.03.4. Подробное описание сборки USB-программатора можно прочитать тут.

    Отличительные особенности:

    • Поддерживаемые операционные системы: Windows 95/98/2000/NT/ME/XP
    • Лицензия: Freeware
    • Язык интерфейса: английский, русский
    • Языки программирования: графический ассемблер
    • Основные функции:
      • графический редактор код программы
      • компилятор
      • симулятор для отладки введенного алгоритма
      • программирование через COM-порт с использованием простейшего адаптера (7 резисторов, 3 диода; схема приведена в документации)
      • отладка алгоритма на кристалле с использованием еще более простого адаптера (1 или 2 диода, 2 или 4 резистора; схема приведена в документации)
    • Адрес поддержки в Интернет: http://algrom.net/russian.html

    Описание:

    Algorithm Builder - бесплатная среда (условия распространения Freeware) для МК AVR, которая обеспечивает полный цикл разработки микропрограммного обеспечения, в т.ч. такие этапы как ввод алгоритма, отладка и внутрисхемное программирование. Разработку программы можно вести как на уровне ассемблера, так и на макро-уровне, при котором возможна работа со знакопеременными величинами произвольной длины. Это приближает возможности программирования к языку высокого уровня.

    Отличительной чертой Algorithm Builder является возможность ввода программы графическим способом, в виде алгоритм с древовидной структурой. В результате вся логическая структура программы становится полностью наглядной. Такой способ программирования максимально близок к природе человеческого восприятия и, поэтому, он намного проще в освоении, если сравнивать с классическим ассемблером. Ожидаемое время сокращения времени создания микропрограммного обеспечения по сравнению с классическим ассемблером составляет 3-5 раз.

    Среда предназначена для работы под ОС Windows 95/98/2000/NT/ME/XP. Для нормальной работы редактора требуется наличие шрифта "Courier".

    Файлы для скачивания:

    • Серия AT90
      • AT90CAN128, AT90PWM3, AT90S1200, AT90S2313, AT90S2323, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90USB64, AT90USB82, AT90USB128, AT90USB162
    • Серия ATmega
      • ATmega8, ATmega16, ATmega32, ATmega48, ATmega64, ATmega88, ATmega103, ATmega128, ATmega161, ATmega162, ATmega163, ATmega164P, ATmega165, ATmega168, ATmega323, ATmega324P, ATmega325, ATmega328P, ATmega603, ATmega640, ATmega644, ATmega644P, ATmega645, ATmega1280, ATmega1281, ATmega1284P, ATmega2560, ATmega2561, ATmega3250, ATmega6450, ATmega8515, ATmega8535
    • ATtiny
      • ATtiny10, ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny24, ATtiny25, ATtiny26, ATtiny28, ATtiny44, ATtiny45, ATtiny84, ATtiny85, ATtiny261, ATtiny461, ATtiny861, ATtiny2313

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

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

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

    Операторы алгоритма в основном записываются в объектах “Field”, условные переходы реализуются посредством объекта “Condition”, а безусловный переход – посредством объекта “

    JMP Vector”. Формат записи операторов существенно отличается от классического ассемблера. Он построен по визуально-функциональному принципу и содержит образ выполняемого действия. Запись операторов должна соответствовать шаблону, воспринимаемому компилятором.

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

    Символ “#” в шаблоне операторов предполагает константу, представленную либо непосредственно, либо в виде алгебраического выражения, “Rd” и “Rr” – рабочие регистры, “Pn” – регистр ввода-вывода.

    Операторы представлены в виде таблицы.

    Операнд Комментарий

    R Рабочий регистр, стандартный или объявленный в секции Working registers: (...)

    # Константа (...)

    SRAM Var Переменная, объявленная в секции SRAM: (...)

    EEPROM Var Переменная, объявленная в секции EEPROM: (...)

    [#] Ячейка SRAM, адресуемая непосредственно

    [X] Ячейка SRAM, адресуемая косвенно, по X

    [--X] Ячейка SRAM, адресуемая косвенно, по X с предекрементом

    Ячейка SRAM, адресуемая косвенно, по X с постинкрементом

    [Y] Ячейка SRAM, адресуемая косвенно, по Y

    [--Y] Ячейка SRAM, адресуемая косвенно, по Y с предекрементом



    Ячейка SRAM, адресуемая косвенно, по Y с постинкрементом

    Ячейка SRAM, адресуемая косвенно, по Y со смещением адреса на # байт

    [Z] Ячейка SRAM, адресуемая косвенно, по Z

    [--Z] Ячейка SRAM, адресуемая косвенно, по Z с предекрементом

    Ячейка SRAM, адресуемая косвенно, по Z с постинкрементом

    Ячейка SRAM, адресуемая косвенно, по Z со смещением адреса на # байт

    P Регистр ввода-вывода (...)

    EE[#] Ячейка EEPROM адресуемая непосредственно

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

    Операнды с косвенной адресацией являются однобайтными. Для многобайтных операций с косвенной адресацией необходимо приведение их формата. Для этого к записи необходимо добавить двоеточие и объявление формата, например:

    #hAB3E->[Y]:Word

    такой макро-оператор будет преобразован в следующую последовательность операторов:

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

    Для операций, которые начинаются с младшего байта невозможно использование операндов с предекременом, например: [--X]:Word+24000

    Для операций, которые начинаются со старшего байта (сдвиги вправо) невозможно использование операндов с постинкрементом, например: :Int24>>

    Кроме того, невозможно создание многобайтного макро-оператора с операндом [X], поскольку для регистра X в системе команд AVR отсутствуют косвенная адресация со смещением (

    ). Используйте или [--X].

    Если создание макро-операции окажется невозможным, то компилятор выдаст сообщение: “

    Such macro-operation can not be created” (“Такая макрооперация не может быть реализована”).

    Макро-операторы записываются исключительно в объектах “Field”. Шаблоны возможных макро-операторов представлены в таблице:

    Шаблон Коментарий

    * -> * Копирование

    * + * Арифметическое сложение

    * - * Арифметическое вычитание

    * & * Побитная операция “И”

    * ! * Побитная операция “ИЛИ”

    * ^ * Побитная операция “Исключающее ИЛИ”

    * Сброс (запись нуля)

    * ++ Инкремент

    * -- Декремент

    - * - Побитная инверсия

    * >> Логический сдвиг вправо

    > * >> Логический сдвиг вправо с переносом

    ± * >> Арифметический сдвиг вправо

    << * Логический сдвиг влево

    << * < Логический сдвиг влево с переносом

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

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

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

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

    Для реализации циклов удобно использовать макро-условие: “R--”. Оно включает в себя декремент однобайтного регистра и ветвление, если результат не равен нулю.

    Объект “Label” – (метка)

    Представляет собой вертикальный штрих, расположенный внутри блока операторов и необязательное имя, располагающееся слева или справа от штриха. Предназначена метка для обозначения мест в алгоритме, куда возможно осуществление условных и безусловных переходов. Для ее введения, необходимо либо выбрать пункт меню “Object\Label”, либо нажать клавиши “Alt+L”, либо нажать кнопку с изображением буквы L на панели инструментов. При необходимости метке может быть назначен конкретный адрес программы, для этого перед именем (если оно есть) необходимо записать константу или алгебраическое выражение, которое определяет этот адрес. Для изменения расположения имени метки на противоположное нажмите клавишу “Tab”.

    Метки обслуживания прерываний.

    Для удобства программирования Algorithm Builder поддерживает специальный вид меток – метки обслуживания прерываний. Для обслуживания прерывания обычным путем необходимо размещение по адресу вектора прерывания кода безусловного перехода на соответствующую подпрограмму. При использовании специального вида меток компилятор проделывает все это автоматически. Для этого вам необходимо дать метке (вершине) стандартное имя прерывания, и пометить ее как макро-образование, нажав клавишу “F2”, при этом имя будет отображаться жирным шрифтом. Тот же результат можно проще получить, выбрав пункт меню “Objects\Interrupt vectors\…”.

    Встретив хотя бы одну такую метку, компилятор заполнит свободное пространство векторов прерывания кодом возврата из подпрограммы обслуживания прерывания (“RETI”), а по соответствующему прерыванию адресу разместит код безусловного перехода на данную метку.

    Объект “Vertex” – (вершина блока)

    По своему отображению и назначению полностью идентичен метке, но, в отличие от нее, задает расположение блока на рабочей плоскости и всегда является его началом. Для того, чтобы создать вершину необходимо либо выбрать пункт меню “Object\Vertex”, либо нажать клавиши “Alt+V”, либо нажать кнопку с изображением буквы V на панели инструментов, либо с помощью мыши, нажав левую кнопку на необходимое место поля в комбинации с клавишами “

    Alt+Ctl+Shift”.

    Объект “Condition” – (условный переход)

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

    Редактирование вектора производится либо при помощи клавиш направления в комбинации с клавишей “Alt”, либо при помощи мыши при нажатой левой кнопке так же в комбинации с клавишей “Alt”. Для перехода от редактирования условия к редактированию имени вектора и, затем, изменения его расположения на противоположное, нажмите клавишу “Tab”. Для того, чтобы ввести новый объект, необходимо либо выбрать пункт меню “Object\Condition”, либо нажать клавиши “Alt+C”, либо нажать кнопку с изображением буквы C на панели инструментов.

    Операторы условного пропуска следующего оператора.

    Здесь возможны три варианта конструкции объекта “Condition”:

    1. Вектор объекта отсутствует, а имя вектора – либо отсутствует, либо содержит зарезервированное слово “Skip”. В нижеследующих примерах выполнение операции:

    “[X]->r2” будет пропущено, если выполнится условие “r1=r2”.

    “[X]->r2”

    2. Записывается инверсное условие, вектор отсутствует, а подлежащая пропуску инструкция вписывается как имя вектора. В этом случае объект будет интерпретирован как: выполнить инструкцию, если условие выполняется. Нижеследующие примеры полностью идентичны.

    “[X]->r2”

    3. Если последующая инструкция является коротким безусловным переходом (RJMP), допускается запись инверсного условия, а вектор этого условия будет интерпретирован как последующий безусловный переход, таким образом, объект будет интерпретироваться как: произвести короткий безусловный переход, если условие выполняется. Далее приводятся три полностью идентичных примера.

    R1=R2 стрелка к той строку куда необходимо перейти

    Отладочная среда AVR STUDIO.

    Отладочная среда разработки приложений для микроконтроллеров семейства AVR содержит:

    • Транслятор ассемблера (Atmel AVR macroassembler)
    • Отладчик (Debugger)
    • Программное обеспечение верхнего уровня для поддержки внутрисхемного программирования.(In-System Programming) ISP)

    Отладочная среда поддерживает выполнение программ как в виде ассемблерного текста так и в виде исходного текста языка С. Отладочная среда AVR поддерживает все типы микроконтроллеров AVR и имеет два режима работы:

    • режим программной симуляции
    • режим управления различными типами внутрисхемных эмуляторов фирмы Atmel (In Circuit Emulators)

    Интерфейс пользователя не изменяется при выборе между режимами отладки.

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

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

    В AVR STUDIO для отладки программ предусмотрены две команды пошагового режима Step Over и Trace into Разница между ними в том что команда Step Over не работает в подпрограммах.

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

    отладочная среда не поддерживает следующие режимы и узлы МК

    • аналого цифровой преобразователь
    • аналоговый компаратор
    • режим часов реального времени
    • режим пониженного энергопотребления

    Для аппаратной поддержки AVR STUDIO применяются

    • стартовые и специализированные наборы разработчика
    • внутрисхемные программаторы
    • внутрисхемные эмуляторы

    В процессе отладки можно инициализировать внутренне ОЗУ и EEPROM (в трансляционном файле формата.EEP) или сохранять их содержимое в формате.HEX Для этого служит пункт Up/Download Memory в меню File

    Через меню File можно открывать выполненные другими пользователями прошивки Open распечатывать написанные программы Print проверять состояние устройств подключенных к последовательному порту COM Port setting .

    Меню Tool инструменты содержит команды запуска управляющих программы

    меню View содержит средства просмотра:

    • ячеек памяти программ Program Memory
    • памяти данных окно Data
    • EEPROM окно Eeprom
    • регистров портов ввода вывода окно new IO
    • хода исполнения программы окно Memory
    • контроля за изменениями переменных Watch
    • отображения состояния программного счетчика, указателя стека содержимого регистра статуса SREG и индексных регистров X, Y и Z текущего времени исполнения программы тактовой частоты ядра микроконтроллера окно Processor
    • просмотра состояния регистров Registers (Если в процессе выполнения программы в очередном цикле значение, какого либо регистра изменится то этот регистр будет выделен красным цветом. При этом если в следующем цикле значение регистра останется прежним то цветовое выделение будет снято. Аналогичный контроль за изменениями применен в окнах ввода вывода памяти и переменных.)
    • контроля за состоянием периферийных устройств окно I/O window

    Меню Edit правка аналогична стандартному текстового редактора.

    Меню Windows позволяет регулировать размещение открывающихся окон

    Help содержит справочную информацию на английском языке

    project позволяет открывать и создавать новые проекты и сохранять их содержимое

    Меню debug отладчик позволяет осуществлять

    breakpoint регулирует выбор точек останова

    Trace& triggers осуществляет трассировку

    Option позволяет осуществлять симуляцию или эмуляцию программы

    Создание программы

    Открыть AVR studio 3.56

    Открыть меню новый проект в меню проект в появившемся окне create new project ввести имя проекта в строку project name. Это же имя будет автоматически скопировано в окно initial file

    Для определения папки в которой будет находится проект необходимо щелкнуть на кнопке …. Справа от окна location в открывшемся окне select folder в строке current folder необходимо написать имя папки. И щелкнуть на select после чего произойдет возврат в окно create new project

    Затем выберите тип проекта Atmel AVR Assembler à Next à select deug platform and device à debug platform à avr Simulator в окне device тип микроконтроллера если частота будет выше появится сообщение

    Таким образом мы активируем окно ассемблера с проетом

    Символ “. “ директива ассемблера

    «;» коментарии не влияющие на работу программмы

    F2 поиск маркеров команд в программе

    Ctrl +F2 установка маркеров отладчика

    F7 ассемблирование программы с сохранением в формате. hex

    F11 отладка открытие workspace

    Shift +F5 – Reset сброс

    Ctrl +F5 - Break назад остановка отладки

    F9 – установка метки точки останова

    F5 – выполнение программы до точки останова

    Ctrl +F10 переход к выполнению команды помеченной курсором

    Трансляция и проверка правильности написания.

    Project à AssembleàProject Output в этом окне содержатся информация о количестве слов кода и данных о наличии ошибок и другая информация. Для локализации ошибок надо установить курсор мыши на сообщение и два раза щелкнуть левой кнопкой мыши. В результате курсор будет установлен на строку вызвавшую сообщение об ошибке и эта строка будет выделена цветом. Если исходный ассемблерный текст содержал сегмент энергонезависимых данных то при трансляции будет создан файл с разрешением.еер. Этот файл содержит даннные для внутренней ЕЕPROM МК и имеет тот же формат что и выходной файл.

    Результатом трансляции является выходной файл

    Отладка проекта

    Для отладки необходим объектный файл object

    Запуск отладчика выполняется через процедуру

    Build and run на панели управления

    В начале осуществляется трансляция входного ассемблерного файла при которой генерируется и объектный файл а затем объектный файл помещается в отладчик.

    Для старых версий предусмотрен вариант трансляции объектного файла на при этом варианте нельзя редактировать исходный файл программы непосредственно в отладчике

    Для генерации объектного файла необходимо указать формат выходного файла транслятора

    При первом запуске отладчика в окнеOption à Simulator Option выбирается тип микроконтроллера Device и частота процесссорного ядра frequency

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

    Полностью debug àavto step

    В пошаговом режиме debug àtrace

    Трассируя блоки функций debug àmulti step

    До точки указанной курсором debug àRun to cursor

    По точкам останова breakpoints à toggle Breakpoint

    Для отладки в пошаговом режиме применяются команды

    Ster Over (не работающая в под программах) и trace into

    Просмотр программы осуществляется в меню View вид, регистров registers, переферийных устройств в окне I /O Windows

    Лекция 15 программаторы Программатор ХХХ prog

    Программатор поддерживает следующие форматы файлов:

    Standard/Extended Intel HEX

    Они предназначены для программирования:

    · микросхем памяти ,

    · внутреннего ППЗУ микроконтроллеров,

    · микросхем программируемой логики (только для ChipProg+, MultiProg).

    Программатор рассчитаны на совместную работу с IBM PC совместимым компьютером. Связь с компьютером осуществляется через стандартный принтерный порт.

    Порядок работы с программатором:

    · Удалить микросхему из колодки программатора (если она была

    установлена).

    · Подключить программатор к сети переменного тока 220В.

    Для MultiProg переключателем на корпусе программатора включить

    питание. Должен загореться зеленый светодиод, индицирующий подачу

    питания на программатор.

    · Подсоединить программатор к стандартному принтерному порту

    компьютера c помощью кабеля связи, входящему в комплект поставки

    программатора.

    · На компьютере запустить программную поддержку xxxProg.

    · В программной поддержке установить требуемый тип микросхемы.

    · Установить микросхему в розетку программатора (микросхемы

    устанавливаются в розетку в соответствии с рисунком на корпусе

    программатора).

    · Выполнить необходимые действия с микросхемой. Если в

    процессе работы с микросхемой на корпусе программатора загорится красный

    светодиод "ALARM", а на экране компьютера появится предупреждающее

    сообщение о срабатывании схемы защиты тока, то это означает, что

    микросхема неисправна.

    · Перед выключением программатора или сменой типа микросхемы

    необходимо удалить микросхему из розетки.

    · Выключить питание программатора.

    · Отсоединить программатор от компьютера.

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

    Программное обеспечение xxxProg в плане взаимодействия с микросхемами построено по классической схеме программаторов "файл" - "буфер" - "микросхема". В программной поддержке программатора реализованы буфера памяти. Буфер памяти является промежуточным звеном между файлом и микросхемой:

    Файл <----> Буфер <----> Микросхема

    Одним из основных элементов программатора являются буфера памяти. Буфер памяти - это объект, предназначенный для хранения данных. Буфер памяти программатора является промежуточным звеном между файлом и микросхемой.

    В xxxProg реализована гибкая структура буферов памяти:

    · допускается создания бесконечного количества активных буферов.

    Ограничением на количество может служить только отсутствие свободной

    памяти в системе.

    · каждый буфер в своем составе имеет определенное количество

    подслоев. Каждый подслой ассоциируется с конкретным адресным пространством

    установленной микросхемы.

    Например,

    - для микросхемы Intel 87C51FA каждый буфер имеет в своем составе

    два подслоя: подслой кодовой памяти и подслой таблицы кодирования

    (encryption table);

    - для микросхемы Microchip PIC16F84 каждый буфер имеет в своем

    составе три подслоя: подслой кодовой памяти, подслой памяти данных

    EEPROM, подслой пользовательских идентификаторов.

    · допускается иметь неограниченное количество окон просмотра

    содержимого каждого буфера.

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

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

    Система тестов разделена на две группы:

    · тестирования качества связи с аппаратурой программатора,включает в себя только тестирование качества связи с аппаратурой программатора.

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

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

    В продолжение темы:
    Операционные системы

    Ниже перечислены основные объекты 1С, которые используются при работе с управляемыми формами. Даны краткие примеры кода, демонстрирующие традиционное использование данных...

    Новые статьи
    /
    Популярные