Программирование AVR микроконтроллеров для начинающих
материалы в категории
Простые программы для микроконтроллеров самостоятельно. Светофор
часть 2
начало статьи Простые проекты на AVR микроконтроллерах
В первой части статьи мы сделали симулятор для нашего будущего проекта, теперь будем составлять прошивку. А для этого мы будем использовать программу Flowcode AVR v4.3.6.61 . Почему будем использовать устаревшую версию? Да потому что сама программа денег стоит, а на более старые версии можно спокойно и кейгены найти….
Ну, в общем, поехали…
Пишем управляющую программу при помощи Flowcode AVR v4.3.6.61
Запускаем Flowcode AVR v4.3.6.61. Выбираем “create a new flowcode flowchart”, в появившемся меню прокруткой выбираем тип микроконтроллера, нам нужен “Attiny13” (рис18,19,20). Далее появляется окно программы с панелями.
В выпадающем меню «файл» выбираем «сохранить как», и указываем путь к созданной нами папке в корневом каталоге диска “myproject”, называем файл его именем на английской раскладке клавиатуры “svetofor”. И мы готовы к написанию алгоритма программы.
Описание Flowcode
Первая инструментальная панель — это панель команд
Перечень представленных команд (с лева – на право на рис.21).
Input (ввод), Output (вывод), Delay (пауза), Decision (ветвление), Connection Point (две точки соединения), Loop(цикл), Macro (макрос), Component Macro (макрос компонента, добавленного в программу), Calculation (вычисление),String Manipulation (строковые операции), Interrupt (прерывание), C Code (блок кода на языке Си), Comment(комментарий).
Ниже расположена вторая панель инструментов.
На ней расположено много всяких устройств, для подключения к портам микроконтроллера (рис.22).
Вообще я прилагаю к статье “help” на русском языке по работе с этой программой, если что, то заглядывайте туда, (правда перевод там смешной, но разобраться можно).
Далее давайте определимся с алгоритмом работы светофора и опишем его словами:1. Зажигается красный свет и горит, к примеру – 5 секунд (не смейтесь, у нас же всё – таки не настоящий светофор с перекрёстка);2.
Зажигается желтый на 2 секунды (красный при этом не тухнет);3. Тухнет красный и желтый;4. Загорается зелёный на 5 секунд;5. Зелёный мигает 3 раза;6. Тухнет зелёный;7. Загорается желтый на 2 секунды;8.
Тухнет желтый;
9. Повтор пункта 1 (или конец цикла).
Теперь этот алгоритм нужно нам запрограммировать в наш микроконтроллер.
Настроим выходы микроконтроллера, для этого на второй инструментальной панели выбираем «выходы» и «LED», на панели видим добавился наш светодиод (рис.23,24).
Кликнем на светодиоде правой кнопкой , выберем «расширенные свойства»(ext properties), выберем цвет, размер, и активный уровень (вспомним нашу модель в протеусе, светодиоды подключили с общим катодом, а значит активный уровень выбираем высокий) (рис.25,26) . Теперь ещё раз кликнем правой кнопкой на нём и выберем “connections” (вспомним модель в протеусе, у нас красный порт – В0, желтый – В1, зелёный – В2.) (рис.27,28).
Таким образом подключаем все три наших светодиода (рис.29).
Теперь у нас есть чем управлять программно.
На клетчатом фоне видим два связанных элемента алгоритма, они неизменно присутствуют всегда. Без них никак нельзя это “BEGIN” и “END”, то есть начало и конец выполнения программы.
Поскольку микроконтроллеры AVR выполняют программу от начала и до конца, то выполнив «тело программы» он дойдёт до “END” и остановится.
Нам этого не нужно, светофор ведь должен работать всё время, пока его не отключат.
Для этого установим бесконечный цикл выполнения нашей будущей программы. Для этого в первой панели инструментов находим значок “Loop”, что значит цикл, и перетягиваем этот значок на место, между “BEGIN” и “END” (рис.30) .
Теперь в теле этого цикла и будем осуществлять наш алгоритм. Первым пунктом у нас идёт – включить красный на 5 секунд. Перетягиваем значок “component macro” что значит макрос компонента, а компонент у нас это наш красный светодиод (кстати у него есть имя, он у нас LED0, это можно посмотреть если на нём кликнуть и посмотреть в панель свойств – “property” (рис.31,32).
Далее, два раза кликнув по значку «макрос компонента» выбираем LED0 и ON, что значит – включить светодиод 0 (рис.33).
Можно ещё вставить комментарий, что бы было легче ориентироваться по своему алгоритму. Перетянем значок “comment”, два раза на нём кликнем, и пишем свой комментарий (рис.34).
Красный должен гореть 5 секунд, есть значок “DELAY” что значит задержка (пауза), перетянем его и в его свойствах укажем единицу времени ( с ), и их количество ( 5 ) (рис.35).
Пунктом 2 у нас идёт включение желтого на 2 секунды, при этом красный не тухнет. Снова: макрос компонента LED1 (он у нас желтый), выбираем LED1, ON, далее DELAY , выставляем 2 и единицы измерения – секунды (рис.36).
Далее пункт 3, тухнет красный и желтый. И пункт 4, загорается зелёный на 5 секунд. Перетягиваем: макрос компонента , LED0, OFF (выключили красный), макрос компонента, LED1, OFF (выключили желтый), снова макрос компонента , LED2, ON (включили зелёный). Далее перетянем DELAY, 5 sec. (рис.37) .
Пунктом 5, у нас зелёный мигает 3 раза, то есть тухнет затем пауза, загорается, пауза, и снова тухнет. Здесь немного подумаем, стоит ли переписывать одни и те же действия 3 раза? Конечно же, нет. Используем цикл, перетянем его и кликнем по нему два раза.
Поставим галочку на LOOP COUNT (что значит количество циклов), поставим в поле нужное нам количество – это 3 цикла (рис.38). Для наглядности примем паузу между включением и выключением зелёного 0.5 секунды(или 500мс.).
Перетягиваем теперь в тело нашего троекратного цикла: макрос компонента LED2, OFF, дальше DELAY, 500 ms, LED2, ON, и DELAY, 500ms. (рис.39).
Далее пункт 6, выключаем зелёный. Пункт 7 включаем желтый на 2 секунды. Пункт 8 – выключаем желтый. (LED2, OFF; LED1, ON; DELAY, 2 sec.; LED1, OFF). Думаю, что такая запись Вам будет понятна, поскольку эти действия выполнялись уже неоднократно (рис.40).
Ну вот, и всё ! Мы написали алгоритм программы управления светофором. Давайте проверим, что у нас получилось. Для этого в выпадающем меню “view” выберем “project option”, откроется окно опций проекта. Установим тактовую частоту микроконтроллера 4800000 Гц. (это нужно для правильного расчёта пауз ), и скорость симуляции, в данном случае “fast as possible” (рис.41,42).
Теперь жмём «ОК», ищем и нажимаем синий треугольник вверху «RUN», (или нажимаем клавишу F5), и наслаждаемся симуляцией работы нашего светофора в Flowcode. Если не работает, или не так работает как надо, то ищем ошибки. Поскольку статья очень подробная то ошибок быть не должно.
Приступим теперь к компиляции проекта. В выпадающем меню “chip”, выбираем “compile to hex”. Появляется окно компилятора, и индикация его работы (рис.43).
Должно получится так как на картинке, если ”Return code=1”, проверяем путь к файлу проекта. Напомню что названия всех папок в пути от корневого каталога и файла должно состоять только из латинских символов. Иначе компилятор будет выдавать ошибку (рис.44).
Открываем папку с проектом, и смотрим на наш HEX файл прошивки (рис.45,46).
А вот и наш Си файл (рис.47,48).
А это алгоритм работы программы
Вот видео всего того что тут было написано:
Собственно полученная нами прошивка (код).
И программа на СИ (находится в архиве ниже).
Теперь возвращаемся к нашему проекту в Proteus professional. Нам нужно проверить, функционирует ли полученный нами код в модели созданного нами устройства, или нет. Для этого открываем наш файл svetofor.
DSN (он у нас в папке myproject), делаем двойной клик на микроконтроллере, откроется окно его свойств (рис.
50), так называемые фьюзы поставьте такие как на рисунке (WDTON=1; CLKDIV8=1; RSTDISBL=1; CKSEL=10; SUT=10).
Выберите путь к “Program file” нажав на кнопку с папкой (укажите путь к нашему HEX файлу) (рис.51).
Нажимаем кнопку треугольник внизу (воспроизвести), и наслаждаемся работой схемы.
Источник: http://cxem.net
Источник: http://radio-uchebnik.ru/txt/15-avr-mikrokontrollery/125-prostye-proekty-na-avr-mikrokontrollerakh-prodolzhenie
Flowcode и анимация
Программа Flowcode – это среда разработки программ для микроконтроллеров, использующая графический язык программирования.
Использование графики в программировании осуществляется давно. Блок-схему программы легче «увидеть» и понять, чем программу, описанную обычным языком.
Пример блок-схемы из Wiki |
Задача разработчиков программы Flowcode сводилась к выбору наиболее часто используемых базовых операций любого языка программирования высокого уровня для создания набора иконок, полностью перекрывающих нужды в программировании микроконтроллеров. Затем разработчики создали компилятор с графического языка на язык Си, наиболее часто используемый в программировании. Последний позволял получить файл, который можно загрузить в микросхему с помощью программатора.
Любая современная среда разработки кроме редактора и компилятора должна иметь средства отладки программы. Поскольку язык программирования был выбран графический, отладочные средства логично было использовать графические. А наглядность этим отладочным средствам придавали элементы анимации. Вот пример работы отладчика в Flowcode 3:
Пример работы отладки в Flowcode 3 |
Выключатель, соединенный с выводом B0, можно «нажать» с помощью мышки, тогда светодиод, соединенный с выводом A0 микроконтроллера, зажигается. Согласитесь, что такая отладка программы нагляднее, чем отслеживание состояния портов.
Во многом программа Flowcode, видимо, ориентирована на задачи обучения, что и определяет используемые графические средства.
Но скорость создания программ и наглядность их работы, скорее всего, не оставили равнодушными и профессиональных разработчиков устройств на базе микроконтроллеров.
Поскольку уже следующая версия программы, Flowcode 4, имела более развитый отладочный компонент. Появилась панель, на которой можно было размещать дополнительные компоненты, сопутствующие разработке устройств.
Панель для дополнительных компонентов в Flowcode 4 |
Кнопки приобрели наглядный, а не схематичный вид, все компоненты располагались на панели, что позволяло превратить ее, скажем, в панель управления прибора. После сборки программы можно не только проверить ее работоспособность, но и проверить, удобно ли управление с задуманной приборной панелью.
Кроме того, в этой версии появилась группа электромеханических устройств на инструментальной панели дополнительных компонентов:
Группа электромеханических компонентов и шаговый двигатель |
Теперь при отладке программы можно было видеть вращение шагового двигателя.
Насколько удачна была эта идея можно судить по разделу электромеханических компонентов в следующей версии Flowcode.
Группа электромеханических компонентов в Flowcode 5 |
Среди новшеств сегодняшней версии программы Flowcode 6 не только наличие двух панелей, системной и панели управления, но и трехмерный вид компонентов, и развитые средства анимации. В примерах к программе можно найти ряд реализаций:
Пример анимации в Flowcode 6 |
Вентиль слева открывается, позволяя жидкости заполнить резервуар, вентиль справа позволяет слить жидкость. На второй панели располагаются приборы и элементы управления.
Вот фрагмент программы, управляющей анимацией:
Фрагмент программы в Flowcode 6 |
Кроме основной части программа имеет много макросов, а анимация в сочетании с программой выглядит достаточно сложной. Но средства анимации позволяют использовать и минимум программных компонентов, как в еще одном примере от Matrix.
Пример еще одной анимации |
Вся программа – это бесконечный цикл, в котором не происходит ничего, а двигатель на системной панели вращается, светодиод загорается, устройство «живет», если включить выключатель.
Средства анимации Flowcode 6 оказываются разнообразны, но о том, как сделать первый шаг, пойдет речь далее.
Создаем новый проект. На системной панели выбираем сферу, которую добавляем на панель:
Добавление объекта на системную панель |
Используем панель свойств, чтобы дать имя объекту:
Задание имени нового объекта |
Имя нового объекта можно оставить, как есть по умолчанию, но удобнее задать имя, которое будет понятно, когда объектов окажется несколько.
Чтобы изменить имя по умолчанию, достаточно щелкнуть в окне Handle и изменить имя на новое.
Некоторые объекты появляются на системной панели с размерами, которые очень малы (или слишком велики). Можно изменить эти размеры, используя в панели свойств параметры раздела World size: Wi…, He…, De…
На инструментальной панели дополнительных компонентов в разделе Machatronics выберем элемент Animator:
Выбор элемента управления объектом |
Из вариантов размещения следует выбрать размещение на системной панели. Варианты размещения появляются после щелчка по кнопке (слева) или после щелчка правой клавишей мышки по названию элемента.
После появления нового элемента на системной панели может потребоваться изменение его размеров. У меня этот элемент почти не виден на панели. И появляется он под сферой, которая была помещена ранее на системную панель. Можно сдвинуть сферу в сторону, выделив ее, затем на панели свойств изменить размеры нового компонента.
Придание объектам удобного для работы вида |
Если новый элемент трудно выделить, чтобы изменить его размеры, можно выбрать его на панели свойств. И в панели свойств элемента изменить его размеры.
Выбор объекта на панели свойств |
Кроме размеров следует задать подключение этого элемента к ранее созданной сфере, используя свойство Target. Полезно и заменить имя по умолчанию на имя удобное для запоминания, например animator_ball. После указания цели для аниматора на системной панели появится стрелка, соединяющая эти два элемента.
Соединение объекта и средства управления |
Создадим макрос, который назовем move_ball.
В основной программе добавим элемент Simulation (взяв его с панели программных компонентов) и выберем для симуляции элемент:
Состав закладки симуляции после появления новых компонентов |
Основная программа выглядит следующим образом:
Первоначальный вид основной программы |
А макрос выглядит так:
Первоначальный вид макроса |
Теперь можно запустить программу на симуляцию, чтобы увидеть, как шар начинает двигаться.
Первый запуск программы |
Осталось разобраться в параметрах настройки, которые были выбраны в элементах Simulation произвольно. Можно прочитать о настройках в файле подсказки, можно опробовать разные настройки, используя созданную программу.
Определившись с движением созданного шара, можно модифицировать основную программу и макрос:
Модификация программы |
Переменная input создана для выключателя, который можно добавить на панель управления (чтобы не мешать анимации на основной панели). Теперь, запустив программу на симуляцию, можно наблюдать за движением шара, а выключателем остановить симуляцию. То есть, анимация связана с событиями, на которые реагирует микроконтроллер.
Используя возможности анимации Flowcode 6, можно создать иллюстрацию технологического процесса.
А если использовать тот факт, что программа Flowcode работает с COM-портом компьютера, если через интерфейсную микросхему подключить к нему второй, реальный микроконтроллер, снабженный датчиками, то получится хорошее наглядное пособие полезное, скажем, в школе. А радиолюбителям создание такого наглядного пособия поможет в освоении работы с микроконтроллерами, да и просто должно быть интересно.
Источник: https://www.rlocman.ru/review/article.html?di=150503
Qucs Flowcode
Многие учебные заведения в последние годы с успехом используют в учебном процессе компьютерные программы. Не исключение и институты или колледжи радиоэлектронной направленности.
Такие программы, как Multisim или MicroCAP, позволяют студентам и соединить теоретические знания с практическими примерами построения электрических схем, и увидеть влияние различных факторов на поведение будущих электронных устройств, и научиться разработке этих устройств в форме близкой к той, что ждет их после окончания учебного заведения.
Программы САПР (или EDA) полезны преподавателям при подготовке методических материалов; они используются в научной работе; они очень удобны при написании статей и рефератов, относящихся к электронике.
Хотя можно предположить, что эти программы из инструментария разработчиков электроники, они с не меньшим успехом могут использоваться теми профессионалами, которые не связаны прямо с разработкой новых устройств.
А таких специалистов гораздо больше.
Для одних программы САПР хорошие помощники в определении возникающих проблем при эксплуатации оборудования, другим помогут при создании нестандартного оборудования, нужда в котором всегда есть у любого предприятия.
И, наконец, есть категория людей особенно склонных к любым инновациям в этой области – это радиолюбители. Для одних из них радиолюбительство отдых от работы, для других, возможно, предтеча будущей профессии.
Существует достаточно много программ или сред компьютерной разработки электроники; ничего плохого о них сказать нельзя, они развиваются и совершенствуются по мере развития и совершенствования самих компьютеров.
Разработчики программного обеспечения стараются включить в состав своих пакетов и такие средства, как программы разводки печатных плат и подготовки их к производству. В последнее время в состав компонентов стараются добавить и специализированные микросхемы, как, например, стабилизаторы напряжения или микроконтроллеры.
Симуляторы электрических цепей, лежащие в основе таких программ, тоже совершенствуются, а проблемы, существующие в их работе, преодолеваются с применением разных математических и программных решений.
Однако во всем многообразии программ для изучения радиоэлектроники с применением компьютеров есть один элемент, на который все чаще обращают внимание многие учебные заведения. Это стоимость программ. Даже с теми скидками, которые предоставляются учебным заведениям, использование компьютеров, а как их не использовать? – использование компьютеров становится слишком дорогостоящим.
В этой проблеме есть неплохой выход – применение свободно распространяемого программного обеспечения, включая и операционную систему. Все разговоры о трудностях перехода с Windows, а я не думаю, что в учебных заведениях используют другие операционные системы, на любой из дистрибутивов Linux, скорее, надуманы.
Qucs существует в версиях для всех общеупотребительных операционных систем: Windows, Linux, MacOS. Программа может использоваться и распространяться бесплатно в некоммерческих целях. Далеко не секрет, что программное обеспечение с момента появления компьютеров широкого применения существует и используется в виде «пиратских копий».
И этому многие производители ПО обязаны своим процветанием. А в последнее время гонения на пользователей этих программ приобретает все больший размах. Выход из этого, кроме аренды дорогостоящих оригиналов у производителей, применение свободно распространяемого ПО. Все аргументы, если бесплатное, значит плохое, имеют сомнительное происхождение.
И т.д.
Предисловие
Микроконтроллер – это контроллер, регулирующее или управляющее устройство в электронике, в миниатюрном исполнении в виде одной микросхемы. Основу работы микроконтроллера составляет взаимодополнение процессора и программы.
Поэтому многие книги о микроконтроллерах начинаются с описания устройства процессора и продолжаются описанием языка ассемблера или языка высокого уровня, чаще языка Си, как наиболее употребительного в профессиональной практике.
По всей видимости, такой подход мешает начинающим осваивать программирование микроконтроллеров в программе FlowCode.
Вольно или невольно, они пытаются найти в программе FlowCode те регистры, о которых идет речь в книгах, или те банки памяти, куда они могли бы записать операторы.
Отдельный предмет их беспокойства и первых действий в освоении микроконтроллеров создание программатора и поиск программы для обслуживания этого программатора.
Бесспорно, и знание устройства микроконтроллера, и программатор – все это нужно.
Но не следует забывать, что овладение искусством программирования, как и любым другим, требует достаточно много времени, когда найдется несколько свободных часов и для пайки программатора, и для чтения описания конкретной модели микроконтроллера.
Найдется время и для изучения тех, нужных в данный момент, составляющих микроконтроллера, которые называются банками памяти или регистрами, модулями ШИМ, АЦП или USART.
Программа FlowCode – это среда разработки программы для микроконтроллеров двух популярных видов PIC и AVR. В этом смысле есть две программы, которые выглядят одинаково, но работают с выбранными микроконтроллерами, хотя есть возможность программу, написанную для PIC-контроллера, импортировать в программу для работы с AVR-контроллерами и наоборот. И т.п.
Источник: http://vgololobov.narod.ru/content/qucs_flowcode/qucs_flowcode.html
FlowCode для ARM | arm | programming
Источник: http://microsin.net/programming/arm/flowcode.html
Adblockdetector