» » Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

 
 
 

Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

Разместил Cherep 2 октября 2012. Просмотров: 52041

15 Здравствуйте, друзья!
В данной статье я хочу рассказать о своих впечатлениях при работе с программой Flowcode. Это среда разработки, позволяющая составлять программу в виде обычной блок-схемы. Соответственно, мы можем иметь лишь поверхностные навыки в программировании, которые сводятся к составлению нужного алгоритма и, соответственно, блок-схемы. Flowcode генерирует С код, а также компилирует его в .hex файл, который можно сразу же прошить в контроллер или, к примеру, смоделировать в Proteus'е.
Существует две версии программы: для AVR и для PIC. Они имеют в целом одинаковый интерфейс, за некоторым исключением. Изначально все это разрабатывалось для PIC, а уже потом портировалось под AVR.
Ознакомимся поверхностно с программой и ее использованием. Следует признать, что русификация очень кривая забавная.
Основное окно программы:
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования
Здесь мы видим небольшую часть уже собранной программы и практически все элементы управления.
Вверху стандартное меню, а вот ниже все намного интереснее. В меню "Объекты", "Обычные" и т.д. находятся готовые модули, которые можно применять в программе. Например, через "Объекты" можно нарисовать линию, фигуру, написать текст. Через "Коммуникации" - присоединить интерфейсы (SPI, I2C, CAN и др.)
Слева находится панель с элементами блок-схемы - циклы, ветвления, и прочее безобразие. Именно с помощью нее будет создаваться будущая программа. Основное поле Flowcode имеет вкладки. Изначально, при создании нового проекта, вкладка всего одна и называется "Главная"("Main"). Это тело основной программы. Если мы пожелаем создать подпрограмму (здесь они называются макросами, но при русификации в некоторых местах забыли приписать буковку С и получилось "Макро" smile ), то каждый макрос будет в своей вкладке.
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

Ниже находится еще одно большое поле, называемое "Панель". Здесь размещаются элементы, которые мы применяем при создании программы (например, это может быть ручка эмуляции АЦП, 7-сегментный или ЖК-дисплей)
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

В целом, интерфейс достаточно прост, и в программе легко разобраться с первой попытки запуска. При создании нового проекта Flowcode предложит разработчику выбрать модель контроллера, а также в меню Вид-Настройка проекта нужно выставить частоту, на которой будет работать контроллер.
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

Ну, в принципе все! smile Сказать можно многое, но интереснее попробовать.

Небольшой урок по созданию простейшей программы

А создавать мы будем.. хм... двоичный счетчик, инкрементируемый по нажатию кнопки. При достижении 8 счетчик обнуляется.
Создаем новый проект и выбираем микроконтроллер Atmega8. Можно в принципе любой другой, но я использовал именно его, поэтому порты и выводы будут описаны применительно к этому контроллеру.
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

Теперь создадим элементы которые нам нужны для работы: это кнопка и 4 светодиода.
Для создания кнопки щелкаем Входы, выбираем SWITCH.
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

В нижней панели появится тумблер, что не страшно. Если щелкнуть правой кнопкой по тумблеру, то можно попасть в контекстное меню и выбрать Расширенные свойства и там настроить как нужно.
Например так:
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

Также, в контекстном меню кнопки выбираем Соединения и приделываем кнопку к порту С и выводу 0.
Похоже на это, только вместо АЦП будет кнопка.:
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

Аналогично подключаем каждый светодиод, но уже к портам B0, B1, B2, B3. Светодиод ищем в пункте Выходы.
Окончательный результат выглядит аналогично этой картинке:
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

Также необходимо создать всего две переменные: count и button. Обе типа BYTE.
Первая - это сам счетчик, она будет меняться от 0 до 8 в процессе счета. Вторая - может быть 0 или 1, она показывает, нажата ли кнопка.
Создаются следующим образом:
Правка - Переменные, в открывшемся окне создаем новую переменную.
Далее собираем следующую блок-схему:
В картинке я дописал комментарии, что для чего нужно. Все очень-очень просто smile
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

Все используемые элементы берутся из левой панели программы (это где много желтеньких значков) smile
После сборки запускаем. Светодиоды по нажатию кнопки должны выдавать двоичное 4-битное число.
Уфф... Вроде ничего не забыл...

Файлы

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


Вывод

Думаю, программа заслуживает внимания.
Особенно интересна она для тех, кто как и я не знает С или Ассемблер на хорошем уровне.
Спасибо всем, кто не устал читать мою писанину, удачи! hi

Об авторе

Сергей (Cherep)
Россия, Рыбинск
Интересуюсь железной дорогой. С паяльником дружу как любитель. Занимаюсь усилителями, преимущественно переделкой и восстановлением отечественных аппаратов. Строю комбик.
 

Понравилось? Палец вверх!

  • всего лайков: 68

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


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


Программирование микроконтроллеров в AtmelStudio 6. Часть 2. Одна программа на

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

Программирование микроконтроллеров в AtmelStudio 6. Часть 1. Первые шаги

Современное радиолюбительство невозможно представить без микроконтроллеров, и это...

Дистанционный контроллер состояния подъездного освещения с web-интерефейсом:

…а вот не видать из Челябинска моего Лампочкометра, я вам скажу больше – его уже и из-за угла не...

Программа для лабораторного блока питания с микропроцессорным управлением на ATMega16

Обещанный релиз первого варианта "правильной" программы к статье Сделай сам лабораторный блок...

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

Продолжим разбор теоретических основ, без которых невозможно полноценное создание программ....

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

Мы научились включать и выключать светодиоды, а как сделать, чтобы они сами заморгали? Понятно, что...

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

Каждый человек, который только начинает осваивать программирование микроконтроллеров,...

Программа "Справочник по SMD" v.3.1

Элементы SMD широко используются в современной электронике, да и в радиолюбительских конструкциях...

Elect_60: программа микроконтроллерного управления внешними устройствами от ПК

Многие наши коллеги желающие создать микроконтроллерное устройство, управляемое от ПК сталкиваются...

Знакомьтесь: научно-исследовательский центр имени Николы Тесла

Интересный НИИ обнаружился в городе Йошкар-Ола – НИЦ имени Николы Тесла. Ребята занимаются СВЧ, но...

Анатомия микроконтроллеров ATmega

Здравствуйте, датагорцы! После публикации моей первой статьи, меня завалили вопросами о...

Программирование микроконтроллеров ATmega

Хеллоу ВСЕМ!!! Итак, как я и обещал, расскажу как залить программу в МК. Для этого нам понадобится...
<
  • Гражданин
2 октября 2012 13:44

Андрей / andrew_spb

  • Регистрация: 21.02.2009
  • Публикаций: 2
  • Комментариев: 127
 
  • 0
Спасибо! Очень полезная статья! Не помешали бы ссылочки на прогу(ладно, уже сам нашел) , и что-то не качает ваш архив - выкидывает на первую страницу - ну думаю это с движком сайта что-то

<
  • Главный редактор
2 октября 2012 14:08

Игорь Петрович Котов / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 262
  • Комментариев: 1600
 
  • 0
Андрей, всё волшебно со ссылками, проблем не отмечено. На момент написания этого коммента 10 скачиваний.

Ссылку на прогу давать не будем - берите на любом популярном треккере.

<
  • Гражданин
3 октября 2012 03:11

Владимир / kotyk7

  • Регистрация: 8.11.2009
  • Публикаций: 5
  • Комментариев: 30
 
  • 0
Mr. Cherep, благодарю за популяризацию этого продукта!
Я его знаю, часто пользуюсь, он мне тоже нравится, хотя идеалом не называю. Есть в нем некоторые минусы, например обьем генерируемого кода. Но для начинающих программить "просто улет".
Если в чем иногда сомневаюсь, беру его, нарисую блочками кусочек кода, "прогоню" и потом переношу все в привычный мне компилятор с обычной лексикой СИ.

К сожалению у меня не получилось скомпилировать код, который вы выложили. Я проверял. Начинающий просто ударится в "столб" и последствия легко прогнозируемые.
Может быть вы исправите ошибку (если она есть) или дадите нам пример попроще?

<
  • Гражданин
3 октября 2012 19:07

Сергей / Cherep

  • Регистрация: 22.03.2009
  • Публикаций: 2
  • Комментариев: 27
 
  • 0
kotyk7, спасибо за отзыв. Насчет объема кода с Вами полностью согласен, но ведь это присуще большинству продуктов, которые позволяют работать аналогичным способом. Те же конструкторы сайтов. Тоже получается монстр smile
Удивительно, что не получилось скомпилировать. Сейчас набросал по-новой, сразу запустилось... shok

<
  • Гражданин
4 октября 2012 03:52

Владимир / kotyk7

  • Регистрация: 8.11.2009
  • Публикаций: 5
  • Комментариев: 30
 
  • 0
Немного не по теме, но все же. Чисто проффесиональный вопрос. Почему в цепь формирования разрядов поставили две 74HC595 (чисто по производственным мотивам, чтобы одиннаковые корпуса.), а не скажем 155ИД3 без 74HC595 вообще? Бистродействие побольще, корпусов меньше, буферный каскад все равно нужен. Портов хватает. Или это чисто научный проект с изучения шины даных SPI?

<
  • Гражданин
4 октября 2012 18:07

Сергей / Cherep

  • Регистрация: 22.03.2009
  • Публикаций: 2
  • Комментариев: 27
 
  • 0
kotyk7, именно так, это сырая версия ампер-вольтметра, собранная из первых попавшихся подходящих компонентов. Создавалась лишь для проверки работы прошивки. В планах ее техническая реализация, там, разумеется, будет уже другая база...

<
  • Гражданин
5 октября 2012 00:58

Владимир / kotyk7

  • Регистрация: 8.11.2009
  • Публикаций: 5
  • Комментариев: 30
 
  • 0
Mr. Cherep, я кажется понял почему втянулся в переписку с Вами, увидев проект. А все потому, что я ранее делал себе цифровой блок питания на МК и решал проблему шлейфа к индикаторам. И пошел другим путем. Хотя мысль сотворить что-то более менее универсальное где-то в подсознании осталась. Да три 74HC595 в этом плане действительно хорошо смотрится, тоесть в плане количества цепей шлейфа. Но столько корпусов на индикаторе (не забываем и о буферных каскадах)... начинаю вспоминать об советских регистрах...

<
  • Гражданин
5 октября 2012 01:25

Сергей / Cherep

  • Регистрация: 22.03.2009
  • Публикаций: 2
  • Комментариев: 27
 
  • 0
Сегодня для интересу прикинул схему на ИР23. Громоздко получилось... на мой взгляд SPI и сдвиговые регистры вкуснее smile Но я далеко не специалист, поэтому возможно упускаю некоторые важные вещи.
ПС. Сейчас придет Игорь и будет ругаться smile Может в форум?

<
  • Гражданин
6 октября 2012 00:10

Игорь / AudioKiller

  • Регистрация: 10.01.2012
  • Публикаций: 3
  • Комментариев: 293
 
  • 0
Пример с кнопкой, переключающей светодиоды. Вопрос такой. Правильный способ программирования:
1. получение прерывания от кнопки
2. Устранение дребезга
3. Переключение светодиодов (причем лучше по отрусканию кнопки)

А как делает эта система? Догадается ли она использовать прерывания и таймер для устранения дребезга контактов?

<
  • Гражданин
6 октября 2012 03:07

Владимир / kotyk7

  • Регистрация: 8.11.2009
  • Публикаций: 5
  • Комментариев: 30
 
  • 0
Mr. AudioKiller, Flowcode взаправду все это описывает в одной команде. Он похож на славный добрый Бейсик, в котором написал команду, а он по концовке вставил кучу асмовских "заморочек". Можете не сомневаться. Он так же четко рассчитает все временные задержки.Поскольку в нем заложены близкие к идеальным модели формирования команд управления микроконтроллером. Безусловно в нем есть парочка "заморочек"-ошибок программистов -создателей. Да где их нет? Это же свойство дает ему возможность очень легко переносить созданный проект с одного МК на другой, и даже на базу от конкурентов. В общем, по всей видимости, он для этого и создан. Я свой проект блока питания на PIC16F677 за 1 час перенес на AVR ATMega16, а за два вечера после работы на PIC16F918 с управлением всех систем по шине SPI. Ни на каком другом компиляторе за такое время Вы подобную задачу по всей видимости не осилите. Но за это тоже есть плата. Избыточность кода. Если использовать мощные современные МК то это не заметно, а если "старые" модели с 1-2 К байт памяти то готовтесь к проблемам при сложных задачах. Да, вдогонку, изучать на нем программирование одно удовольствие (потом немного сложно к Си привыкать).
Mr. Cherep, о ИР23 я вспомнил как пример, который у меня положительных эмоций не вызывает. Эсли пожелаете "помучаться" над созданием универсального многоразрядного индикатора для нужд Города и не только, я готов присоединиться, а то я помалу завершаю статью в журнал и скоро появиться чуток свободного время.

<
  • Гражданин
6 октября 2012 13:40

Сергей / Cherep

  • Регистрация: 22.03.2009
  • Публикаций: 2
  • Комментариев: 27
 
  • 0
AudioKiller, соглашусь с kotyk7. Помимо всего этого, можно использовать и другие прерывания, они доступны в программе. К сожалению, сказать чего-то большего не могу, т.к. с прерываниями работать еще не умею sad
kotyk7, насчет универсального индикатора - интересно!

<
  • Гражданин
6 октября 2012 22:11

Игорь / AudioKiller

  • Регистрация: 10.01.2012
  • Публикаций: 3
  • Комментариев: 293
 
  • 0
Я немного не то имел ввиду. Я имел ввиду - система пытается все делать "совсем тупо в лоб", или все же пытается правльно использовать прерывания и таймер (пусть и не очень эффективно)? Потому как даже в мощных МК таймеров мало, и если требуется использовать несколько независимых временнЫх интервалов, то не получится ли так, что она либо все попятается посадить на один таймер, или для коротких выдержек использует 16-ти разрядный таймер, и длинную выдержку уже не получишь?

<
  • Гражданин
8 октября 2012 03:34

Владимир / kotyk7

  • Регистрация: 8.11.2009
  • Публикаций: 5
  • Комментариев: 30
 
  • 0
Mr. AudioKiller, с прерываниями там все в ручном режиме, какой хочеш такой и выбираеш. Приятно то,что сразу есть калькулятор. Меняеш коэффициент деления - видишь частоту прерывания. Но пока не на все МК есть все ее виды. То есть сложные, редко используемые, есть не все.

<
  • Гражданин
25 октября 2012 15:29

Радик / galrad

  • Регистрация: 23.08.2011
  • Публикаций: 12
  • Комментариев: 84
 
  • 0
Цитата: kotyk7
Я свой проект блока питания на PIC16F677 за 1 час перенес на AVR ATMega16, а за два вечера после работы на PIC16F918 с управлением всех систем по шине SPI. Ни на каком другом компиляторе за такое время Вы подобную задачу по всей видимости не осилите.

Полностью с вами не соглашусь, хотя бы потому, что мне приходилось переносить проекты с PIC на AVR и наоборот, например регулятор температуры с индикатором от nokia 3310. На Си делал это буквально за 30-40 минут, хотя Си на стадии изучения... Но, в любом случае для начинающих программистов, программа может оказаться просто незаменимой, поэтому ждем продолжений...
Кстати, пользуюсь аналогичной программой HiAsm Studio для создания приложений в win-дах, принципы те-же самые...

<
  • Гражданин
8 января 2013 04:18

Владимир / kotyk7

  • Регистрация: 8.11.2009
  • Публикаций: 5
  • Комментариев: 30
 
  • 0
Mr.galrad, как по мне Вы привели не совсем удачный пример. Програмная часть регулятора температуры даже с индикацией не сравнится по обьему кода с полностью автономным блоком питания с управленим на МК. Особенно если там еще и шина SPI по линии индикации и управления аналоговой частью...

Информация
Вы не можете участвовать в комментировании. Вероятные причины:
— Администратор остановил комментирование этой статьи.
— Вы не авторизовались на сайте. Войдите с паролем.
— Вы не зарегистрированы у нас. Зарегистрируйтесь.
— Вы зарегистрированы, но имеете низкий уровень доступа. Получите полный доступ.