Если две предыдущие программы я рекомендовал как оптимальный вариант для начала работы с электроникой вообще и микроконтроллерами в частности, то эта программа лишь мое личное предпочтение и честно говоря, для повторения конструкций с этого ресурса она Вам не понадобится. Но не упомянуть приятную во всех отношениях программу я не могу.
Итак что имеет 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 порт становится еще выше.
О том, как правильно подключить программатор к микроконтроллеру и прошить в него программу я расскажу в конце статьи. А пока что сосредоточимся на создании программы.
Кратко пробежимся по элементам, из которых строится алгоритм
- Текст . Представляет из себя текстовую строку, в которую записываются некоторые команды для algorithm builder.
- Вершина блока . Алгоритм в Algorithm Builder делится на блоки. Для создания такого блока и служит этот элемент.
- Поле . Представляет из себя отцентрированную в блоке строку. Предназначен для записи большинства команд микроконтроллеру. (создается при нажатии клавиши ENTER).
- Метка . Просто вертикальная черта. Не несет в себе никакой информации микроконтроллеру,
- Условный переход . Просто говоря - условие. Если то, что записано в прямоугольнике правда, идем по стрелке вправо, если ложь - вниз.
- Безусловный переход . Просто стрелка, для перехода между элементами алгоритма.
- Настройщик управляющих регистров . Элемент, позволяющий удобно настраивать периферию микроконтроллера
Переходим к практике
- Открываем 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.
Распространение программы: бесплатная