Окончание. Начало в№ 5 '2009
Джон ДОБСОН (John DOBSON)
Программа Flowcode
и программатор Microchip PICkit 2
Введение
Компания Microchip предлагает стартовый набор разработчика PICkit 2 Debug Express, включающий демонстрационную плату с 44-выводным контроллером и самый маленький программатор в мире. А компания Matrix Multimedia создала среду разработки Flowcode с интуитивно понятным графическим интерфейсом, позволяющим разрабатывать программу для микроконтроллера на уровне блок-схем.
Данная статья предназначена для начинающих разработчиков, которые только осваивают программирование микроконтроллеров. На начальной стадии среда разработки Flowcode, позволяющая реализовать простейшие операции на основе PIC-контроллеров, — отличная альтернатива более сложной и профессиональной MPLAB IDE. Для получения базовых навыков по использованию программатора PICkit2 и программы Flowcode рассмотрим построение простейшего проекта по управлению светодиодом.
Для ознакомительных целей компания Matrix Macromedia предлагает бесплатную демонстрационную версию Flowcode — http://www.matrixmultimedia.com/temp/ FlowcodeV3.exe.
Примечание. Единственное ограничение — допустимый объем скомпилированного кода не более 2 кбайт.
Шаг первый — построение блок-схемы
Обычно создание проекта начинается с планирования последовательности действий (алгоритма), которые должен выполнять микроконтроллер. В среде разработки Flowcode для данных целей предусмотрен наглядный интерфейс по созданию блок-схемы программы.
В качестве первого примера разработаем систему, которая будет приводить в действие один из двух режимов «моргания» светодиодами в соответствии с положением внешнего переключателя. Алгоритм программы приведен на рис. 1.
Шаг второй — реализация блок-схемы в Flowcode
Этапы реализации блок-схемы в Flowcode (рис. 2):
• Запустите программу Flowcode.
Yes
Output
-> PORTA/
Delay
1 ms ^
Output
/-> PORT А/
Delay
1 ms
Loop
END
Нажмите ОК, когда откроется окно Reminder Screen.
Создайте новый проект (Create a new Flow-Code flowchart).
Выберите в качестве контроллера (Choose a target) PIC16F887 (он установлен на демонстрационной плате 44-pin Demo Board комплекта PICkit 2 Debug Express). Откройте новую рабочую область (workspace) с названием “Main”.
Добавьте необходимые блоки для блок-схемы. Для этого наведите курсор на нужную иконку в левой панели и, удерживая левую кнопку мыши, перетащите ее в рабочую область.
Добавьте необходимые элементы (светодиоды LED, переключатель). Для этого щелкните мышью по иконке соответствующего элемента в верхней панели.
В выпадающем меню окна LEDs («Светодиоды») выберите пункт Component Connections. В меню Connect to Port («Соединение с портом») выберите PORT D (светодиоды демонстрационной платы 44-pin Demo Board выведены на PORT D). Данный диалог должен принять вид, который представлен на рис. 3.
Рис. 3. Выпадающее меню окна LEDs («Светодиоды»)
Рис. 2. Блок-схема, созданная во Flowcode
Рис. 4. Выпадающее меню окна Switches («Переключатели»)
В выпадающем меню окна Switches («Переключатели») выберите пункт Properties («Свойства») и укажите количество кнопок— 1 (рис. 4).
В пункте Connect to Port выпадающего меню выберите PORT B (кнопка на плате 44-pin Demo Board подключена к PORT B, бит 0). Диалог Connect to Port примет вид, который представлен на рис. 5.
Input
Для начала необходимо создать переменную, отвечающую за информацию о положении кнопки. Щелкните по Variables («Пере-
менные»), чтобы открыть диалог Variables Manager. Щелкните по Add New Variable («Добавить новую переменную») и добавьте новую переменную с названием Input (рис. 7).
Нажмите OK. Вернувшись в окно Variables Manager, нажмите кнопку Use Variable. Вернувшись в окно Properties, выберите PORT B, Single Bit (рис. 8).
Рис. 5. Диалоговое окно Connect to Port
Настройка элементов блок-схемы
Теперь настало время настройки элементов, составляющих блок-схему. Для настройки элемента нужно дважды щелкнуть на его иконке мышью. Для удобства чтения блок-схемы в строке Display name напишите короткое пояснение о функциональном назначении блока.
Loop («Основной цикл»)
Рис. В. Настройка новой переменной в окне Variables Manager
Decision
В окне Properties нажмите на Variables и выберите Input, затем щелкните на Use Variable. Дайте название (Display name) — “Is switch pressed?” (рис. 9).
Рис. 9. Введение названия для новой переменной
Ветка No/Output
Чтобы зажечь крайние светодиоды, необходимо выставить в единицу биты 0 и 7 порта PORT D, то есть ввести в PORT D число 129 ( 27+ 20) (рис. 10).
Ветка Yes /
Первый блок Output
Чтобы зажечь светодиоды с 0 по 3, необходимо ввести в PORT D число 15 ( 20+ 21+22+ 23) (рис. 11).
Рис. 11. Введение в PORT D числа 15
Оба блока Delay
Длительность задержки может быть задана в миллисекундах и секундах. Необходимо задать задержку в полсекунды (рис. 12).
Второй блок Output
Чтобы зажечь светодиоды с 4 по 7, необходимо ввести в PORT D число 240 (24+25+ 26+ 27) (рис. 13).
Рис. 13. Введение в PORT D числа 240
Теперь блок-схема должна иметь вид, представленный на рис. 14.
Симуляция программы
Программа Flowcode позволяет проверить ее работу при помощи симуляции. Симуляция возможна в двух режимах: непрерывная и пошаговая, блок за блоком. В обоих режимах в окнах Variables и Call Stack отображаются текущие значения. Когда вы запускаете симуляцию программы на полной скорости, данные в этих окнах не обновляются. Если же скорость симуляции ниже полной или выполнение программы ведется пошагово, созданные переменные отображаются в окне Variables на каждой итерации.
BEGIN
Repeat
While
1
Read switch status
Is switch pressed?
/ 129 -> PORT D /
Repeat
Yes
Switch on LEDs 0 and 7
Switch on LEDs 0 to 3
/ 15
-> PORT D/
Wait for 0.5 seconds
500 ms
Switch on LEDs 4 to 7
/ 240
/-> PORT D/
Wait for 0.5 seconds
500 ms
T
END
Рис. 14. Конечный вид блок-схемы, созданой во Flowcode
Теперь посмотрим на симуляцию на полной скорости. Нажмите Run на панели инструментов. Используйте возможность остановки и продолжения работы программы (F5 или Go/Continue в меню Run). При этом можно увидеть текущие значения в окнах Variables и Call Stack, а также крайние светодиоды (0-й и 7-й светятся). Щелкните по иконке кнопки и убедитесь, что светодиоды 0-3 моргают в противофазе со светодиодами 4-7. Программа работает корректно.
Если вы не получили нужного результата, вернитесь к началу и повторите все заново.
Программирование PIC-контроллера
Подготовительная часть закончена, вы получили полнофункциональную программу, работающую по заданному алгоритму. Выполните следующие инструкции для программирования контроллера:
• Подключите PICkit2 к ПК через USB.
• Подключите PICkit2 к демонстрационной плате 44-pin Demo Board.
• В меню Chip выберите пункт Compile to Chip (для компиляции необходимо сохранить созданную программу).
• Откроется окно Compile Messages, в котором отображается текущий прогресс. При программировании контроллера засветятся индикаторы Target и Busy на PICkit2. Когда программирование закончится, появится строка Finished, после чего следует нажать кнопку Close.
• Ваша программа должна запуститься. Светодиоды 0-3 должны мигать в противофазе со светодиодами 4-7. При нажатии кнопки должны светиться только светодиоды 0 и 7.
• Незаметно для пользователя программа Flowcode сформировала по графической блок-схеме C-файл и компилировала его в ассемблер. Полученный C- и asm-код можно просмотреть, выбрав в меню Chip соответственно команды “View C” и “View ASM”
либо просмотрев содержание файлов prog1name.c и prog1name.asm в папке, где сохранен данный проект.
Заключение
В данной статье показано, как просто создать программу для контроллера по заданному алгоритму. При этом пример охватывает лишь малую часть функциональных возможностей Flowcode. Незатронутыми остались такие возможности, как вычислительные опе-
рации, манипуляции со строковыми переменными, создание пользовательских макросов, вставки C-кода и т. д. Для их освоения программа Flowcode снабжена подробными справочными материалами и описаниями (меню Help). О всех возможностях, предоставляемых Matrix Multimedia, можно узнать на сайте http://www.matrixmultimedia.com/.
Разработчики, заинтересовавшиеся PICkit2, могут воспользоваться специальным предложением от компании Microchip на следующей странице. ■