Когда же появится сигнал? – для новичков в радиоделе

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

Давайте завершим, последний штрих, надеюсь, в подпрограмме range Каждый раз, нажимая кнопку диапазона, мы увеличиваем значение переменной ran_num

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

Эта функция может быть не во всех версиях программы В последних версиях Flowcode она есть

Рис 2411 Подсчёт количества срабатываний кнопки выбора диапазона

Но что делать, когда это значение перевалит за 3

Добавим решение этой проблемы в макрос range Возможно, там это и останется, нет, перенесём

Решение проблемы – это добавление ветвления, когда переменная ren_num «переросла» 3 В случае выполнения условия, мы вернём переменную к значению 1

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

Рис 2412 Окончательный () вид подпрограммы выбора диапазона, range

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

В этой подпрограмме мы зададим переменной pause (которую нужно создать) среднее значение первого диапазона Здесь же  мы будем опрашивать кнопки  (more  и less) увеличения  и уменьшения частоты (переменные для этих кнопок тоже следует добавить) Все переменные типа byte, этого достаточно И, если мы захотим, мы должны переключать диапазон, то есть, опрашивать кнопку range Пока всё

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

Как и с переключением диапазонов, мы должны следить, чтобы переходы внутри диапазона не вышли за рамки допустимого Решение, как избежать этого, у нас уже есть Посмотрим, применимо ли оно

Кнопка переключения диапазонов должна обращаться к уже готовому макросу range И вызов этого макроса добавлен

У нас всё готово для формирования импульсов на выводе В5 Приступим

Рис 2413 Первый набросок подпрограммы первого диапазона

Формирование сигнала будет происходить так же, как мы и раньше формировали импульсы И для этого понадобится бесконечный цикл

Рис 2414 Формирование импульсов

Формирование импульса происходит в бесконечном цикле Занимаясь этим, микроконтроллер не сможет увидеть то, как изменяются его входы, когда мы нажимаем кнопки Поэтому опрос кнопок мы внесём в этот цикл Лишние операции увеличат неточность длительности импульсов, но незначительно в нашем случае В другом случае следует искать другое решение

При опросе кнопок увеличения и уменьшения частоты, как и в случае с диапазоном, мы добавим переменные, которые будут отслеживать, сколько раз нажаты кнопки Имена переменным дадим mor_num и les_num В блок инициализации программы добавим их начальные нулевые значения

Этот макрос из-за большого количества элементов сильно «удлинился» Если мы начнём и дальше работать над программой, увеличивая количество  элементов, то  подпрограмма станет трудно читаемой Кроме того, возможно, к этим элементам программы мы будем обращаться неоднократно Есть смысл добавить макросы more и less И ещё, мы не первый раз даём одинаковые имена подпрограмме и переменной Это не самый лучший подход, но проблем в данном случае возникнуть не должно

Рис 2415 Макрос увеличения частоты

Как вы видите, он очень похож на то, что мы уже делали А на него похож, я бы сказал почти копия, макрос less Только, если в первом макросе мы двигаемся по массиву в сторону увеличения индексов массива, то во втором будем двигаться в обратную сторону

Рис 2416 Макрос уменьшения частоты

Мы можем повторить, поправив, если нужно  и где нужно, макрос этого  диапазона для двух оставшихся Это можно сделать, скопировав «текст» подпрограммы А где нужно  подправить макросы ran2 и ran3

Если в первом диапазоне мы в качестве единиц выбрали миллисекунды, то во втором и третьем это будут микросекунды Это изменение необходимо внести

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

Для второго диапазона множитель, количество повторов, равен 100 Значит, нужно добавить счётный цикл с количеством прохода 100

Для третьего цикла количество повторов 10 Всё это надо не забыть исправить

Рис 2417 Основная правка в макросе ran2

И есть ещё одно важное замечание

Чтобы избежать этого, можно применить разные приёмы Я решил выбрать такой:

Я добавил перед вызовом макроса more цикл Если кнопка more нажата, то есть, переменная more стала равна нулю, программа переходит  на ветку вызова макроса more Но  перед этим попадает в цикл, который длится до тех пор, пока кнопка нажата

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

Рис 2418 Решение проблемы «нажатой кнопки»

Такие добавки следует сделать во всех макросах ran1ran3 для всех кнопок И я не исключаю, что придётся внести ещё одно изменение Дребезг контактов, от которого не спасёт предыдущая добавка Это можно решить, добавив небольшие паузы до и после добавленного цикла

Рис 2419 Добавление «антидребезговых» пауз

Возможно, первую проверку следовало провести гораздо раньше Но лучше поздно, чем никогда Сейчас мы перейдём к первой проверке программы, которую вначале сделаем в режиме пошагового прохода Затем проверим в интерактивном режиме И, наконец, проверим работу программы в ISIS (Proteus)

Но перед этим я хочу привести на рисунке вид подпрограмм, которые уже с трудом помещаются

«в кадр»

        

Рис 2420 Вид подпрограмм ran1, ran2 и ran3

Перед первой проверкой добавим на панель три кнопки Я убрал с панели сетку и добавил фаску Она не нужна, но…

Кнопки, напомню, в разделе Входы и называются SWITCH По умолчанию – это тумблер Если щёлкнуть правее надписи Расшир Св… в окне свойств, то можно в диалоге свойств задать нужное

Рис 2421 Выбор нужно вида и типа кнопок

Добавив три кнопки на панель, в окончательном виде они не будут фиксированными, но для пошаговой отладки они то, что нам нужно, можно ввести подписи к ним Чтобы добавить текст, его нужно найти в пункте Объекты, добавить щелчком На панели появится выделенная надпись:

«Введите текст» В окне свойств надписи есть в разделе Оформление пункт Надпись, правее которого и можно ввести нужную надпись

Под кнопками я добавлю надписи «Диапазон», «Больше», «Меньше» При проверке будет ясно, какую кнопку нажимать

Кроме того, я добавил элемент Фаска (из того же раздела Объекты), скорее, для красоты

Закончив с оформлением, к которому мы ещё вернёмся, можно начинать пошаговую отладку После запуска в окно наблюдения я добавлю переменные (щелчок правой клавишей мышки в окне наблюдения и пункт Добавить переменную…) И не забудем подключить кнопки (используя в свойствах кнопки раздел Подключе…) к В0, В1 и В2, соответственно

Рис 2422 Пошаговая отладка программы

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

Для индикации используем: выводы D0, D1, D2 – индикация диапазонов, D3, D4, D5, D6, D7 – индикация частоты Это меняет вид макроса range

Рис 2423 Изменения в макросе range

Изменения коснутся и макросов ran1-ran3 В самом начале, при входе в макрос, мы добавляем:

Рис 2424 Изменения в макросах ran1-ran3

И в макросах more и less следует добавить выводы значений в порт D

                                                                         

Рис 2425 Изменения в макросах more и less

И, конечно, следует добавить светодиоды на Панель И не забыть их подключить

Рис 2426 Изменение в виде Панели

И,  наконец,  можно  добавить  ещё  один  светодиод  на  вывод  B5,  который  будет  показывать наличие сигнала Его можно сделать, например, жёлтым

С добавлением светодиодов проверять стало заметно удобнее Кроме того, если вы надумаете воплотить в жизнь это устройство, панель поможет вам выбрать удобное расположение деталей на панели реального устройства

Работать с программой стало удобнее, и как-то программа работает Я бы сказал «дышит» Но так ли она «дышит», как мы задумали

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

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

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