Если две предыдущие программы я рекомендовал как оптимальный вариант для начала работы с электроникой вообще и микроконтроллерами в частности, то эта программа лишь мое личное предпочтение и честно говоря, для повторения конструкций с этого ресурса она Вам не понадобится. Но не упомянуть приятную во всех отношениях программу я не могу.
Данная статья лишь ознакомительный обзор программы, на которой будет написано большинство проектов этого блога и не в коей мере не должна рассматриваться как реклама или рекомендация к использованию этой среды программирования.
Автор программы Геннадий Громов.
Сайт программы www.algrom.net
Итак что имеет 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. Скачать версию без ограничений можно здесь
AB544.exe (209125 Загрузок)
Кому интересно посмотреть мануал, а устанавливать программу лениво – вот выкладываю его отдельно
manual.pdf (208853 Загрузки)
Программа активно развивается, поэтому смотрите свежие версии на сайте программы www.algrom.net. Кроме того, там же есть небольшая подборка библиотек.
P.S. Программа портативная. Тесть после установки папку с программой скидываем на флешку и работаем с нее.
Для Си программа не предназначенна?
🙂
это и есть ассемблер
если Вы знаете ассемблер — Вы поймете насколько эта среда облегчает жизнь ассемблерщику!
Вот для примера:
вместо «MOV R0,R1» записывается «R1->R0»,
вместо «LDI R16,63» — «63->R16»,
вместо «ST X,R2» — «R2->[X]»,
вместо «LSR r7» — «r7>>»,
вместо «SBI PortB,3» — «1->PortB.3» и так далее.
По моему, очень даже просто и логично.
Но в плане разобраться постороннему человеку в программе — тут Вы правы — это сложно (но не думаю, что пишущему на Си будет проще разобраться с ассемблером).
Ну а если серьезно, я конечно понимаю о чем Вы пишете. Создавая устройства на Билдере я обрекаю их не определенное «одиночество». Но переходить на чистый ассемблер я не хочу — уж слишком непросто создавать на нем сложные структуры, а Си не даст мне такого контроля в использовании ресурсов МК. Вот такая дилемма 🙁
Вы создаёте шедевры! однако зачем вы с упорством достойного лучшего применения используете вырвиглазное уродство в котором нет ничего понятного? почему просто бы не писать на ассемблере? толку от шедевра если под себя не настроить и код не написать? получается что всё что тут лежит вопроизведению не подлежит, а если можно то только с блокнотом и ручкой убить в пустую N вечеров раскапывая алгоритм из каракулей этого франкенштейна? зачем программа посредник?!?! ассемблер наше всё.
По умолчанию, в среде объявлены следующие системные константы:
“CPU_Clock_Frequency” – частота работы ядра в Герцах;
“IO_Org” – начальный IO регистров в адресном пространстве SRAM.
“SRAM_Size” – размер SRAM в байтах;
“SRAM_Org” – начало области SRAM;
“EEPROM_Size” – размер EEPROM в байтах.
“Flash_Size” – размер Flash памяти в 16-разрадных словах.
“Flash_Page_Size” – размер страницы программирования Flash памяти в 16-разрядных словах.
Добрый день. Спасибо за сайт!!!
Подскажите пожалуста, имя константы хранящей размер ОЗУ, если таковая имеется. Дело в том что я сейчас творю псевдодиспетчер задач и задержек на АВ, и возникла необходимость попасть в начало стека.
чет ссылка не работает. Может на какой нибудь яндекс диск скинуть?
Разобрался, почему нет доступа… http://annaanna.nm.ru/MyProg.rar комплект. Ну и до кучи, чуть более свежая, последняя версия (выкладываю впервые) http://annaanna.nm.ru/ABTOASM_v1_8.rar (тоже 2006года).
Только что проверил на последнем AB — всё прошло!
Забыл указать адрес. ftp://annaanna.nm.ru/MyProg.rar. На текущий момент, почему-то, доступен только парольным доступом к FTP. Надеюсь, временно…
Я в своё время сделал к AB преобразователь. Преобразует его бинарник и листинг в обычный ассемблер, почти готовый для компиляции. Тогда AB еще имел ограничения, а мой проект был заметно больше. Делал его исключительно на AB, затем получал своим преобразователем отдельные модули, стыковал полученные тексты в один большой кусок с получением бинарного кода на 8КБ. Теперь ограничений нет, но и сейчас я контролирую генерируемый АВ код читая тексты ассемблера. Там сразу видно, какие коды к чему приводят. Выкладывал где-то на Radiokot.ru. Без АВ я этот код точно бы не написал.
спасибо! печально что развитие прекращено даже не знаю что сказать очередной минус к тому что код как я понял наследовать нельзя мало обучающего материала, но к плюсам наглядность которая подкупает прям своего рода визуал студия
Есть еще одна обучалка http://www.forum.getchip.net/viewtopic.php?f=16&t=354
Книг по Билдеру Вы не найдете, так как он не распространен и книги под него писать, наверное, не выгодно. И не найдете в будущем — автор программы прекратил поддержку и проект не развивается. 🙁
Хотелось бы увидеть обучающий материал на тему этой программы пользуюсь авр студией хотелось графический вариант но что то не получается. Я или что то пропустил или это связана стем что строю алгоритм с заду на перед. побывал поискать книги но кроме автора программы на эту тему не кто не писал
Буду стараться.
Всем привет! Большой респект Евгению за проделаную работу созданию утроиств и обслуживания сайта, что есть возможность поковырять исходники. Хочу согласится с автором, что лучше начинать ATTiny2313 и хочу порекомендовать книгу Белова очень дохочего пишет. Они произвели хороее впечетление хотя изночально задумывал занятся пиками, но сам не заметил как занялся AVR. На страницах сайта хочу получить больше практических навоков. Надеюсь в дальнейшем будут устройства и сервоматорчиками.
Нажимаем «S»-настройщик, нажимаем «External interrupts» выпадет настройщик периферии — там все и настраивается. Вот картинка
Здравствуйте. Скажите, пожалуйста, как организовать внешнее прерывание при низком уровне int0?
Огромное спасибо за помощь!
Пример программы написан для ATtiny2313 c внутренним задающим генератором на 8МГц (поэтому ничего менять не нужно). Соответственно в проекте есть и нужные фьюзы (прошьются автоматически если поставить галку в окне прошивки).
И последний вопрос. Какие настройки у таймера при частоте 8МГц? http://www.forum.getchip.net/viewtopic.php?f=18&t=164
Не помню — попробуйте.
максимальная яркость будет при значении 0? или нет?
Да. В любом месте программы записываете значение в переменную и «яркость» соответствующего канала станет пропорциональной записанному значению.
Т.е. нужно просто присвоить определенное число этой переменной?
Если Вы про алгоритм софтовых ШИМ, то переменная BriN (где N — номер канала 1, 2, 3,…) и задает скважность соответствующего канала.
Спасибо. Мне не совсем понятно как менять скважность. Объясните, пожалуйста.
Реализуется это при помощи широтно-импульсной модуляции (ШИМ). Меняя скважность сигнала, мы ,соответственно, меняем уровень яркости светодиода. Каждый таймер МК имеет по два (чаще всего) ШИМ-модуля. С помощью билдера очень просто их настроить(конечно нужно почитать перед этим литературу). Если нужно много ШИМ-каналов, то делается софтовый ШИМ. Заготовка для этого уже есть http://www.forum.getchip.net/viewtopic.php?f=18&t=164 Просто подставляйте свои порта.
Всем доброго времени суток.
Я только начинаю заниматься с микроконтроллерами. Пишу элементарные программы с среде Algorithm Builder.
Много раз видел, как на Ваших устройствах меняется яркость светодиодов. Захотелось разобраться, но из исходников я ничего не понял
Подскажите, пожалуйста, как это реализуется?
Желательно подробнее.
Заранее спасибо
Было одно удовольствие читать комменты GetChiper и Brigadir !!! Оба правы, но GetChiper правее. 🙂 Я в свое время подобный путь проходил еще со времен ZX-SPECTRUM. От BASIC и Asembler Z80, потом перешел на PIC (Asembler), потом на AVR (уже Asembler и СИ). Еще купил программатор и научился работать с такой экзотикой, как Cypress (среда разработки PSoC) — через две недели самообучения перевел один свой проект с AVR на CY7C63813-SXC (просто этот контроллер с аппаратным USB всего 1$ в Китае стоит). К чему я все это? Да, все зависит от целесообразности. Посмотрел я на http://www.flowcode.info — не понравилось, там больше проектов под PIC и слабая поддержка. «Algorithm Builder» — идеальный для школьной программы! Еще бы сайт для этой темы развить — с личными кабинетами для участников, где ученики могли б свои наработки выставлять, а другие могли бы их оценивать в балах. Тогда сайт развивался бы самими участниками.
Классная статья! Надо ещё добавить для наглядности видеолекции с Ютуба: http://www.youtube.com/results?search_query=Algorithm+Builder
На этой проге можно сваять все что угодно.
интерестно, а часы на этой проге можна сваять ?