Программирование spi avr algorithm builder. Algorithm Builder fo avr, Начинаем Графический ассемблер. Работа с переменными и константами

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

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

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


Работа с переменными
и константами организована гениально просто. Инициализация производиться в отдельном окне в виде таблицы – освобождая алгоритм от лишних записей. В буквальном смысле слова все разложено по полочкам. Удобно иметь в любой момент под рукой перечень всех переменных и констант.

Настройщик периферии. Algorithm Builder имеет удобный настройщик периферии (таймеры, UART, ADC, SPI и т.д.) позволяющий, не читая даташитов, просто выбрать необходимые параметры работы устройства в окне настройки. В этом же окне Билдер честно покажет набор инструкций, обеспечивающих эти параметры.


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

Внутрисхемное программирование кристалла. При использовании внутрисхемного программатора микроконтроллер подключается к COM порту компьютера через несложный адаптер (три диода и несколько резисторов).Также есть вариант USB подключения. Программатор ведет подсчет числа перепрограммирований кристалла, сохраняя счетчик непосредственно в кристалле. Процесс программирования кристалла очень прост — в два «тыка».

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

Так почему такая хорошая программа так малоизвестна?
Первая причина — программа до 2010 года была платной. Бесплатная демоверсия имела полную функциональность, но ограничивала код откомпилированной программы до 2 килобайт. В 2010 году автор программы сделал новогодний подарок – версия 5.43 вышла свободной от ограничений.
Вторая причина — отсутствие поддержки программы. Вы не найдете ни одного апнота производителя в котором бы использовался Билдер. Интернет ресурсы, посвященные данной программе, можно пересчитать по пальцам.
Жаль, конечно – программа действительно интересна.

Выводы:
Ассемблерщики при переходе на Algorithm Builder будут писать кипятком, так как они будут иметь все тот же ассемблер, но управляться им станет на порядок легче и наглядней. Одно плохо – придется распрощаться с наработанными библиотеками и писать новые.
Сишникам однозначно Билдер не понравится, так как придется опускаться до уровня ассемблера, а какому сишнику понравится возюкаться с регистрами.
Наверное, наилучшая целевая аудитория — начинающие осваивать микроконтроллеры. Программа проста и поэтому будет легко осваивать программирование.
В общем, конечно, выводы получились неоднозначные. Думайте сами… 🙂

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

Среда визуального программирования


Кому интересно посмотреть мануал, а устанавливать программу лениво – вот выкладываю его отдельно


Программа активно развивается, поэтому смотрите свежие версии на сайте программы www.algrom.net . Кроме того, там же есть небольшая подборка библиотек.

P.S. Программа портативная. Тесть после установки папку с программой скидываем на флешку и работаем с нее.

(Visited 17 675 times, 18 visits today)

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

Для начала немного теории

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

  • Прошивка (сущ.) - скомпилированная программа
  • Прошивка (глагол) - процесс записи скомпилированной программы в память МК

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

Принципиальная схема программатора:

Вообще, резисторы можно и не ставить, но тогда риск спалить lpt порт становится еще выше.

О том, как правильно подключить программатор к микроконтроллеру и прошить в него программу я расскажу в конце статьи. А пока что сосредоточимся на создании программы.

Кратко пробежимся по элементам, из которых строится алгоритм

  1. Текст . Представляет из себя текстовую строку, в которую записываются некоторые команды для algorithm builder.
  2. Вершина блока . Алгоритм в Algorithm Builder делится на блоки. Для создания такого блока и служит этот элемент.
  3. Поле . Представляет из себя отцентрированную в блоке строку. Предназначен для записи большинства команд микроконтроллеру. (создается при нажатии клавиши ENTER).
  4. Метка . Просто вертикальная черта. Не несет в себе никакой информации микроконтроллеру,
  5. Условный переход . Просто говоря - условие. Если то, что записано в прямоугольнике правда, идем по стрелке вправо, если ложь - вниз.
  6. Безусловный переход . Просто стрелка, для перехода между элементами алгоритма.
  7. Настройщик управляющих регистров . Элемент, позволяющий удобно настраивать периферию микроконтроллера

Переходим к практике

  • Открываем Algorithm Builder
  • Создаем новый проект (Файл-Новый. Перед созданием нового проекта нужно закрыть старый!)
  • Клик правой кнопкой мыши по рабочей области - опции проекта. В выпадающем списке выбираем контроллер(Atmega88). В поле тактовая частота вводим 1000000 (Это 1 МГц). И жмем применить.

​Теперь все готово для написания программы!

Начнем с классики - мигание светодиодом

Последовательность действии очень проста:

  • Включить светодиод
  • Подождать немного
  • Выключить светодиод
  • Еще немного подождать

​Начнем по-порядку - как включить светодиод? (т.е установить логическую 1 на ножке)

Ответ: Все действия с периферией микроконтроллера (В т.ч с портами ввода/вывода) осуществляются через регистры.

Регистр - набор из 8 бит. Бит - элементарная единица информации, может быть 1 либо 0

1 0 0 1 1 1 0 1

Это - пример регистра. Самый левый бит называется старшим, и имеет номер 7, самый правый - младшим, имеет номер 0. Не 1, а 0, это важно! Каждый бит регистра за что-либо отвечает. Например, за запуск таймера. Так что регистр можно сравнить с набором тумблеров.

Запись значения в бит регистра осуществляется следующим образом:

Большинство ножек микроконтроллера Atmega88 разделены на 3 порта ввода/вывода. Ножка может настраиваться как на выход, так и на вход. Мы будем работать с портом с индексом C

Каждый регистр имеет свое название

Нас интересуют два регистра - PORTC и DDRC.

  • DDRC отвечает за то, будет ли ножка входом или выходом
  • PORTC управляет состоянием ножки, то есть задает 0 на ножке или 1.

Посмотрим на распиновку микроконтроллера:

Нас интересует 6 ножек с 23 по 28. Это и есть порт C. Светодиод будем подключать к выводу 5 порта C (PC5, 28 ножка)

Итак, нужно:

  • Настроить ножку PC5 на выход
  • Установить единицу на ножке PC5.

За то, будет ли ножка порта C входом или выходом отвечает регистр DDRC. Что бы ножка PC5 была входом, нужно записать в бит №5 лог. "0". Что бы ножка PC5 была выходом, нужно записать в бит №5 лог. "1".

"NOP" удаляем, он нам пока не нужен

Выделяем вершину блока, идем в раздел элементы-прерывания, выбираем из списка Reset

Жмем кнопку "S" (настройщик), выбираем Stack Pointer.

О том, зачем это нужно, я расскажу позднее.

Ставим элемент "label", жмем Enter

Вместо "NOP" пишем следующее:

То есть мы конфигурируем ножку 5 порта C (PC5) на выход

Как я уже говорил, регистр PORTC управляет состоянием ножек порта C, то есть задает 0 на ножке или 1. Записывая в бит 5 этого регистра единицу, на ножке 28(PC5) установится 1, записывая в бит 5 этого регистра ноль, на ножке 28(PC5) установится 0.

Мы сконфигурировали ножку порта на выход и вывели туда 1.

Теперь нужно сделать задержку.

Для создания задержек в папку с проектом нужно поместить специальный файл - waitings.alg(расширение.alg указывает, что это дополнительный алгоритм) и подключить его.

Подключается файл следующим образом. В верхней строке прописывается следующий код: +: Waitings.alg. Всё!

Задержка создается следующим образом:

где число в скобках - величина задержки (в миллисекундах)

Теперь можно написать полную программу:

Жмем кнопку (скомпилировать) - algorithm builder создаст файл прошивки в файлах проекта.

Полная схема устройства


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

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

  • Поддерживаемые операционные системы: 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

Графическая среда программирования для разработки приложений под микроконтроллеры с архитектурой 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.

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