Начинаем завершающую работу над программой – для новичков в радиоделе

June 7, 2014 by admin Комментировать »

В предыдущих главах мы рассмотрели ряд вопросов, которые могли бы вызвать затруднения при реализации программы перестраиваемого генератора прямоугольных импульсов

Сейчас мы вооружены достаточно, чтобы завершить построение программы Мы определились с теми ограничениями, которые могут возникнуть, и выбрали компромиссное решение Но, как всегда, я предпочитаю описать программу на обычном языке, уделяя внимание тому, какие действия я буду совершать, когда устройство заработает

Описание действий, включаемых в программу:

После включения устройства программа ждёт нажатия кнопки «Диапазон, range» Когда кнопка нажата, программа переходит к обработке первого макроса (подпрограммы), в котором: выбран первый диапазон (с переменной number, в которой будем хранить номер диапазона) и вызывается макрос вывода сигнала со средней частотой диапазона В макросе вывода (out) ожидается нажатие кнопок

«Увеличение» и «Уменьшение» частоты, по которым меняется длительность импульсов, и нажатие кнопки «Диапазон», которая вызывает переход к макросу выбора диапазона (увеличивая номер диапазона)

Пока я не уверен, что полностью (и правильно) описал всю программу Но можно приступить к окончательному формированию программы, дополнив её блоком инициализации, где  мы создадим и заполним нужные нам массивы Чтобы не ссылаться на предыдущие страницы и рисунки, я повторю все шаги по созданию программы, включая напоминание, что неплохо бы создать отдельную папку для проекта

Создав новый проект в программе Flowcode for AVR, я предпочитаю сразу сохранить его во вновь созданной папке, задав ему имя (у меня это project_24_01) После этого через основное меню Правка-Переменные я создаю три массива для хранения длительностей импульсов

Обратите внимание, что по умолчанию каждый массив имеет 20 значений Нам нужно только 5

Если мы не изменим размер массива (кнопка Размер массива…), то на программе это не скажется, но мы можем быстро израсходовать всю память, отпущенную для хранения переменных

Рис 241 Создание массивов для хранения длительностей импульсов

Можно сразу создать все переменные Но не будем спешить, а лучше приступим к заполнению массивов, нажав в этом диалоге кнопку Закрыть

Для заполнения массивов воспользуемся программным элементом Вычисление, который, как мы уже говорили, используется и для операций присваивания

Войдя в окно редактирования элемента Вычисления (двойным щелчком мышки), мы нажимаем кнопку Переменные и выбираем первый массив ran1

После появления массива в окне редактора он не имеет заданного номера элемента массива

Рис 242 Появление первого элемента массива

Задаём номер первого элемента массива, напомню, что нумерация начинается с нуля Вводим значение И так повторяем для всех элементов массива В результате получается следующий набор присваивания для первого массива:

Рис 243 Заполнение первого массива

Мы можем здесь же продолжить заполнение второго массива, но я предпочитаю добавить ещё один элемент Вычисление, заполнив его

Рис 244 Заполнение второго массива

И повторив всё, заполним третий массив

Рис 245 Заполнение третьего массива

Я думаю, что вы уже заметили: если внести небольшие исправления в полученные нами значения, то нам понадобится только один массив для хранения данных Конечно, если вы будете использовать точные значения частот, то это может оказаться не так, но мы и не планировали использовать точные значения Зато, удалив два массива, мы сэкономим место для других переменных Объем этой памяти у микроконтроллеров не так велик Я останавливаюсь на решении удалить два массива, а массив ran1 переименовать просто в ran, оставив значения 50-15- 10-7-5 Для внесения изменений – пункт основного меню Правка-Переменные В диалоге выделяем ненужный массив и нажимаем кнопку Удалить Подтверждаем удаления кнопкой ОК в появившемся сообщении, и удаляем второй массив

Выделив  массив  ran1,  используем  кнопку  Переименовать,  чтобы  удалить  единицу  из  его названия

Теперь добавим переменные для опроса кнопки и подсчёта, сколько раз была нажата кнопка

«Диапазон» Назовём первую переменную range, вторую ran_num и выберем тип byte Кнопка будет вход подключать к общему проводу, то есть, входной сигнал при нажатой кнопке будет равен нулю Поэтому записываем условие ветвления программы при range = 0

Поскольку мы ввели переменную ran_num, не смотря на то, что многие компиляторы по умолчанию задают значения переменным, обнулим эту переменную в блоке инициализации Это совсем не обязательно сейчас делать, но лучше привыкнуть к этому Иногда начальное значение может отличаться от нуля, забыв это сделать, можно получить ошибки в работе программы, которые трудно будет выявить Для второй переменной range начальное значение будет задаваться первым опросом кнопки

Если кнопка нажата, то мы должны изменить значение переменной ran_num и вызвать макрос обработки диапазона Для наращивания переменной используем тот же элемент Вычисление, что и прежде А для вызова макроса добавим элемент Макрос

На рисунке вызов макроса ещё не добавлен в программу Но вставить этот элемент мы уже можем, хотя сам макрос ещё не создан

Чтобы создать макрос, как и с созданием переменных, есть два основных механизма

Первый механизм создания макроса – это использование пункта основного меню Макрос, где есть раздел Новый

Второй механизм – это вызов диалогового окна, в котором задаются свойства элемента вызова макроса Двойной щелчок мышкой по этому элементу открывает диалог

Какой из механизмов использовать, вы можете решить «по месту», это никак не скажется на работе программы

Рис 246 Основная ветвь программы

Если вы обратились к свойствам программного элемента для создания нового макроса, вы увидите кнопку Создать новый, с щелчка по которой начните создание макроса В открывшемся окне задайте имя макроса, я назвал его range

Если вы к этому времени не задали конфигурацию микроконтроллера, не забудьте, что нужные параметры следует задать в двух местах: Чип-Конфигурация задаёт слово (или слова) конфигурации, Вид-Настройка проекта задаёт рабочую частоту тактового генератора

И ещё, в ранних версиях Flowcode комментарии, написанные кириллицей, могли отображаться знаками вопроса при просмотре текста на языке Си Однострочный комментарий в этом случае записывается после двойной обратной косой черты, символа однострочного комментария Формально всё, что за косой чертой, отбрасывается компилятором, но я сталкивался, когда программа переставала работать, споткнувшись на текст, написанный кириллицей Если такое произойдёт у вас, то переходите на латинскую клавиатуру, делая запись вида Initsializacia

Если вы задали имя макроса в диалоговом окне, но не сам макрос, то воспользуйтесь там же кнопкой ОК&ampИзменить макрос

В самом макросе range мы должны осуществить выбор диапазона, который определится значением переменной ran_num Сделать это можно разными способами, но последние версии программы Flowcode предлагают наиболее удобный – программный элемент Переход (Switch) Добавим его в подпрограмму

Рис 247 Добавление переключателя в макрос

В свойствах этого элемента мы должны указать, какая переменная будет переключателем переходов по нескольким ветвям программы У нас 3 диапазона Соответственно будет три значения переменной ran_num (о том, чтобы их не было больше, нам предстоит позаботиться) И три ветви программы

Одно из ветвлений, Случай = 1, создано программой по умолчанию Чтобы добавить ещё два, достаточно поставить галочки в окошке инициализации

Значение может быть и не цифрой, а буквой, но её нужно заключить в апострофы: ‘a’

Рис 248 Задание свойств элемента Переход

После выбора нужного количества переходов и выхода из диалога свойств (кнопка ОК) подпрограмма принимает вид:

Рис 249 Вид подпрограммы выбора диапазона

Остаётся заполнить ветви подпрограммы, куда будет направлена программа в зависимости от того, сколько раз мы в процессе работы нажмём кнопку переключения диапазона

Чтобы  не  перегружать  схему  программы,  мы  создадим  ещё  три  макроса:  ran1,  ran2  и  ran3, заполнив их вызовами три ветви переключателя программы

Обратите внимание на закладки Кроме основной программы с закладкой Main у нас есть закладки для всех макросов Переключение  с помощью закладок (щелчком мышки) позволяет перейти в рабочее поле данной подпрограммы

Рис 2410 Завершение работы над макросом выбора диапазона

Источник: Гололобов ВН,- Самоучитель игры на паяльнике (Об электронике для школьников и не только), – Москва 2012

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты