Проверка работы программы – для новичков в радиоделе

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

Работоспособность программы мы проверили средствами моделирования самой среды разработки Но нас интересовало получение вполне определённых временных интервалов

К сожалению, в наборе инструментов Flowcode нет осциллографа Но он есть в другой программе, ISIS Для подготовки проверки временных интервалов, оттранслируем настроенную программу в HEX-файл Запустим программу ISIS

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

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

После выбора режима следует нажать кнопку P (для открывания окна выбора), как показано на рисунке

Выбранные для проекта компоненты позже будут храниться в окне ниже В любой момент вы можете их использовать для добавления к схеме

Рис 2121 Инструментальная панель программы ISIS

Если вы не знакомы с программой ISIS, то советую загрузить мой перевод руководства с моего сайта и почитать Но пока мы используем самые простые операции Надеюсь, они будут понятны из моего рассказа

После появления окна выбора компонентов я обычно ввожу в строку поиска нужный мне компонент Сейчас это ATmega168

Рис 2122 Диалоговое окно выбора компонентов

Даже выбрав компонент, вы можете оказаться перед необходимостью дополнительного выбора А общее количество компонентов столь велико, что легко заблудиться при выборе Выделите нужную модель из списка и нажмите кнопку ОК Диалоговое окно закрывается, курсор меняет свой вид Если щёлкнуть мышкой на рабочем поле программы, то появляется контур микросхемы, привязанный к курсору

Рис 2123 Установка компонента в рабочее поле программы

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

Первое, что следует сделать, это изменить свойства, заданные по умолчанию Окно  свойств можно открыть либо двойным щелчком по компоненту, либо выбором из меню, например, всплывающего после щелчка правой клавишей мышки по компоненту (Edit Properties)

В данный момент нас интересует задание правильной тактовой частоты микроконтроллера и выбор hex-файла, который мы получили после трансляции нашей программы в Flowcode Расположение этого файла мы знаем, поскольку сами создавали папку для проекта Кстати…

Указать нужную частоту можно впечатав значение в окно Clock Frequency А указать нужный hex- файл удобнее с помощью обозревателя файлов, который появляется, если нажать кнопку с изображением папки Это отмечено на рисунке ниже

Рис 2124 Настройка компонента в окне его свойств

После настройки параметров остаётся добавить к проекту осциллограф, который позволит наблюдать за выходом микроконтроллера Все виртуальные приборы вызываются кнопкой, которая обозначена «Приборы» на рисунке инструментальной панели Выбираем осциллограф (добавляя так же, как добавляли микросхему), соединяем его вход с выходом B0 Эту простую операцию выполняем, подводя курсор мышки к концу вывода 14 микросхемы, щёлкнув по нему, и проводя соединение до вывода входа осциллографа, где щёлкаем мышкой повторно Осталось запустить симуляцию (моделирование) кнопкой Play, расположенной в самом низу поля программы и имеющей вид клавиши любого проигрывателя

Рис 2125 Проверка работы программы в ISIS

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

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

Я хочу загрузить программу в мой модуль Arduino и проверить с помощью «живого» осциллографа полученный результат

Для загрузки программы я использую программу avrdude Это программа для работы с программаторами, отличительной чертой которой является возможность управления из командной строки То есть, прописав эту программу в настройках Flowcode, я могу «прошить» микросхему из этой программы

Нужные настройки обнаруживаются в разделе «Чип-Опции компиляции…» основного меню программы Flowcode Выбрав этот раздел, мы оказываемся в окне настроек компиляции

Рис 2126 Диалоговое окно настроек компиляции

Если вы когда-нибудь надумаете использовать другой компилятор, именно здесь вы сможете указать его Но сейчас нас интересует настройка программатора Я указываю размещение программы работы с программатором И добавляю строку параметров (для моего модуля Arduino), которая и будет управлять процессом «прошивки»

%a avrdude &quot%fhex&quot -c stk500v1 -p m168 -P com6 -b 19200 -Uflash:w:&quot%fhex&quot:i -C C:\avrdude\avrdudeconf

Программатор обнаруживается как stk500v1 (хотя его и нет) Остаётся подключить модуль к порту USB и запустить процедуру

Рис 2127 Запуск процедуры программирования микросхемы

Завершив процедуру, я запускаю осциллограф, подключив первый канал к выводу 13 модуля, и наблюдаю…

Рис 2128 Осциллограмма результата

Закончив предыдущую главу полным фиаско, я начинаю новую главу с разбора «полётов» Я рад, что проблемы возникли естественным путём, и мне не пришлось ничего придумывать

Как вы помните, раньше мы проделывали опыты по определению длительности импульсов И я использовал модуль Arduino И всё работало Повторим ту программу, и проверим,  не испортилось ли что-нибудь за это время

Рис 221 Повторение программы проверки длительности импульсов

Программу я, конечно, просто открыл, поменял длительность с 1 мкс на 500 мкс, и убедился, что с модулем всё в порядке Убедился, что и с настройками конфигурации, и с настройками программатора всё в порядке

Через несколько секунд становится ясно, отчего я не увидел импульсов в предыдущем опыте Возможно, вы уже поняли, где ошибка Я мог, это моё право, использовать для формирования сигнала вывод порта В0, как я сделал в программе Но в этом случае не было смысла пытаться наблюдать за выводом В5, как я сделал это, подключая осциллограф

Почему я начал главу, написав, что рад появлению проблемы Потому что проблемы время от времени появляются в любом случае Но, используя графический язык программирования, вы сосредотачиваетесь на существе работы контроллера, не отвлекаясь на проблемы кодирования Ошибку можно допустить, бывает, но найти её трудно, если у вас достаточно большой объем кода, особенно на ассемблере Позже, да, вы будете справляться и с этим, но в  начальный момент, когда очень много нового, лучше использовать графический язык программирования Легче разобраться со всем остальным

Если внести исправления, то результат изменится

Рис 222 Осциллограмма исправленной программы

Итак, первую ошибку я нашёл Но остаётся непонятно, почему период повторения импульсов в программе ISIS разительно отличается от полученного с помощью «живого» осциллографа

Мы уже говорили, что паузы, задаваемые в программе, очень сильно зависят от тактовой частоты, которая в свою очередь зависит от конфигурации Контроллер ATMega168 имеет два байта конфигурации, которые я оставил заданными по умолчанию в Flowcode и не настраивал в программе ISIS Вот эти два байта из программы Flowcode: 0x0,0xdf Последний байт переведём в двоичный вид: 11011111 И обратимся к справке по микроконтроллеру Есть две таблицы для старшего и младшего байтов

Рис 223 Таблицы байтов конфигурации

Каким образом эти настройки сказываются на тактовой частоте, можно прочитать в описании Но мои попытки изменить конфигурацию Arduino, к счастью или нет, я решил, что к счастью, не увенчались успехом

Вместе с тем, устанавливая частоту в программе Flowcode, я ориентировался на маркировку кварцевого резонатора А заданные настройки конфигурации могут давать другое значение этой частоты Пока для нашей цели эта деталь не столь важна Если разница станет принципиально важной, мы подумаем, как решить эту проблему Единственное, чтобы не проверять каждый раз всё на макетной плате, я приведу результат в программе ISIS в соответствие с реальным макетом

Рис 224 Настройка микроконтроллера в программе ISIS

Теперь, запуская программу на симуляцию, мы получим результат:

Рис 225 Моделирование программы в ISIS

Я не стал что-то решительно менять в настройках модуля Arduino, да и вам пока не советую, поскольку он поможет освоить много интересного из жизни микроконтроллеров Сбив настройки решительными действиями, можно лишиться его связи с программой Flowcode Конечно, модуль прекрасно будет работать в своей собственной среде программирования, о которой вы можете прочитать, но я сейчас предпочитаю использовать то, с чего начал И, помимо прочего, модуль Arduino не только может программироваться из программы Flowcode, но сам может выполнять функции программатора для программирования других микроконтроллеров О том, как это можно сделать, я встречал рассказы в Интернете

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

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

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