ПРОШИВКА РАЗРАБОТКА И ОТЛАДКА УСТРОЙСТВ НА МК ЧАСТЬ 4

Рассказать в:

ПРОДОЛЖЕНИЕ >>>>>>>

Те, кто предпочитает ограничиться повторением готовых конструкций на МК, дальнейшее  повествование могут не читать, поскольку мы переходим к рассказу о том, как разработать программу, заставляющую МК делать все, что необходимо. Первый шаг в этом направлении настолько очевиден, что о нем нередко забывают. Задачу следует сформулировать, и желательно - в письменном виде на бумаге или на экране компьютера. Не жалейте на это времени. Чем с большими подробностями будут изложены все особенности реакции МК на те, или иные воздействия (а это могут быть как команды оператора, так и изменения состояния контролируемого или управляемого устройства), тем больше шансы на успех разработки. Особенно важно правильно описать работу в "нештатных" ситуациях. Ни в коем случае нельзя исходить из того, что все соединенные с МК устройства всегда будут работать правильно, а оператор - действовать безошибочно.

Заведомо неверны такие, например, утверждения: "...если двигатель не включен, датчик перегрева его обмоток никогда не сработает..." или "...прежде чем нажать кнопку А, оператор обязательно отпустит кнопку В и никогда не будет нажимать кнопку С...".

И еще один совет. До окончательной формулировки задачи не ограничивайте себя возможностями какого- либо определенного МК. Его выбор должен быть не предпосылкой, а результатом анализа. Исключений может быть только два: на столе лежит К1816ВЕ48, а до ближайшего радиорынка  - 500 км или заказчик требует: "сконструируй мне это устройство обязательно на таком-то МК”. Хотя в последнем случае все-таки остается возможность убедить заказчика, что он не прав.

Но вернемся к реверсивному счетчику, схема и коды, программы которого описаны в первой части. Напоминаю, что он должен подсчитывать движущиеся объекты, которые в зависимости от направления движения вызывают срабатывание двух датчиков (оптронов с открытым оптическим каналом) в том или ином порядке. Возможные положения объекта относительно датчиков (SENS1, SENS2) и выходные сигналы последних  показаны на рис. 15.

ПРОШИВКА РАЗРАБОТКА И ОТЛАДКА УСТРОЙСТВ НА МК ЧАСТЬ 4

Всего положений - пять, но различить по сигналам датчиков исходное, и конечное невозможно, поэтому они обозначены одинаково - PosO.  А теперь предстоит преодолеть первый "подводный камень". Если ширина объекта меньше расстояния между зонами чувствительности датчиков, состояние Pos2 (когда перекрыты оба датчика) никогда не наступит, а между Pos1 и Pos3 возможна "мертвая зона", в которой сигналы датчиков соответствуют PosO. В этом случае при движении объекта слева направо его положения будут сменять друг друга в порядке PosO - Pos1 - Pos3 - PosO или PosO - Pos1 – PosO - Pos3 - PosO, а при движении справа налево  в обратном порядке. Однако будем считать, что ширина объекта достаточно велика и между положениями Pos1 и Pos 3 всегда будет наблюдаться Pos2. Это позволит однозначно определять направление движения и фиксировать, например, случаи, когда объект, войдя в зону чувствительности одного из датчиков, затем - другого, изменяет направление движения и возвращается назад.

Следуя методике, изложенной в [журнале Радио 2000 № 11ст 25-26 и №12 ст. 20-23], построим граф конечного устройства, работающего по сформулированному выше алгоритму. Он показан на рис. 16.

ПРОШИВКА РАЗРАБОТКА И ОТЛАДКА УСТРОЙСТВ НА МК ЧАСТЬ 4

Обратите внимание, что, кроме выделенной утолщенными линиями "правильной" последовательности переходов между вершинами графа, завершающейся увеличением (переход от ND3 к NDO) или уменьшением (переход от ND6 к NDO) содержимого счетчика COUNT, предусмотрены переходы, задающие поведение устройства в  "аварийных” ситуациях при всех возможных комбинациях внешних воздействий. Это гарантирует, что программа, реализующая такой граф, не "зависнет" из-за случайного сбоя показаний датчиков.

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

В персональных компьютерах подобные преобразования также сопровождают вывод любой информации на экран монитора. Но большую их часть операционная система (ОС) компьютера выполняет в скрытом от программиста режиме. Аналогичные проблемы возникают и при вводе внешних сигналов. Для некоторых МК тоже существуют ОС, несравненно более простые, чем применяемые в компьютерах, но берущие на себя заботу об организации ввода/вывода. Однако их распространение крайне ограничено, поэтому, проектируя устройство на МК, в большинстве случаев операции ввода/вывода и преобразования форматов данных приходится программировать самостоятельно. Накопив определенный опыт, можно использовать отработанные решения многократно, создав нечто вроде собственной ОС.

Число и характер принимаемых и генерируемых внешних сигналов - один из решающих факторов при выборе МК для решения конкретной задачи. Все множество МК можно разделить на группы по числу выводов. Самые маленькие - восьмивыводные (PIC12C5XX, Р1С12С67х, PIC18F01x, PIC18F02x, AT90S2323, AT90S2343, ATtiny 11 -  ATtiny 22) - применяют, когда достаточно трех-шести внешних сигналов. Например, рассматриваемый счетчик вполне можно было бы построить и на другом МК , используя два вывода его порта В для приема сигналов датчиков, а третий - для передачи накопленного в счетчике числа последовательным кодом в СОМ-порт компьютера.

К МК следующей группы - в корпусах с 18 (20) выводами (PIC16F84, PIC16F62x, , AT90S2313 ATtiny2313) - уже можно подключить цифровой индикатор, например, светодиодный. В простейшем случае, чтобы организовать динамическую индикацию, требуется семь (или восемь с учетом десятичной запятой) выводов МК для подключения элементов (сегментов) и по одному выводу на каждое знакоместо - общих катодов (анодов) индикатора. Таким образом, для использования четырехразрядного индикатора необходимо задействовать 11 выводов МК. Еще два потребуются для подключения датчиков. В результате, например, у МК PIC16F84(A) свободных выводов общего назначения не остается. Это вполне приемлемо, если совершенствовать разработанное устройство не предполагается, но может вызвать затруднения, когда потребуется подключить к МК еще какие-нибудь внешние узлы, например, кнопки управления.

Вообще говоря, ситуация с недостатком выводов МК довольно типична. Чтобы разрешить ее, схему устройства приходится усложнять. Например, отказавшись от прямого управления элементами индикатора и применив отдельную микросхему-дешифратор, можно "сэкономить" три вывода, что и сделано в счетчике, схема которого приведена на рис. 1. (первого поста) Еще большей экономии достигают, используя многоразрядные индикаторы со встроенными контроллерами. В [журнале Радио 2001 № 4 ст. 30,31] рассказано, как управляют подобным индикатором всего по шести проводам

В устройствах, где МК связан с большим числом внешних устройств, применяют приборы, имеющие 28, 40, 64 и более выводов. По системе команд и таким характеристикам, как быстродействие, объем памяти программ и данных, МК одного семейства с разным числом выводов различаются мало, хотя память многовыводных приборов, как правило, объемнее, к тому же ее можно существенно расширить, подключая внешние ОЗУ и ПЗУ. Наибольшие различия - в "ассортименте" встроенных периферийных устройств: таймеров, аналоговых компараторов, ЦАП и АЦП, контроллеров различных интерфейсов. И это не удивительно. Входы и выходы каждого дополнительного устройства требуют, как правило, нескольких внешних выводов микросхемы. Современная тенденция совершенствования МК - все большая универсализация их выводов. Неприкосновенными остаются лишь цепи питания. Нередко выводам дают не только двойное, но и тройное назначение, совмещая, например, функции дискретного ввода/вывода, счетного входа таймера и аналогового входа компаратора. Это позволяет при ограниченном числе выводов расширить набор встроенных в МК устройств, но, к сожалению, исключает одновременное использование некоторых из них.

В качестве примера можно привести МК PIC16F627 и PIC16F628 (различаются объемом памяти). Будучи программно,  а также по числу и назначению выводов совместимыми с PIC16F84, они содержат три таймера, два аналоговых компаратора с внутренним программируемым источником образцового напряжения, встроенный контроллер последовательного интерфейса, другие дополнительные устройства и допускают использование для ввода/вывода общего назначения входа сброса процессора и одного из выводов, обычно служащих для подключения кварцевого резонатора. Подобные новинки постоянно появляются и среди МК других семейств.

Немаловажный фактор - быстродействие МК. Новички довольно часто оценивают его частотой подключаемого кварцевого резонатора, забывая, что машинный цикл (минимальное время, требуемое для выполнения одной команды) в МК разных семейств занимает неодинаковое число периодов колебаний резонатора (тактов): в МК семейства AVR - 1, PICmicro - 4, MCS-51 - до 12 тактов.

Однако на этом основании нельзя утверждать, что с одним и тем же кварцевым резонатором ATtiny2313 работает ровно в четыре раза быстрее, чем PIC16F84. Дело в том, что из за различий в архитектуре этих МК для реализации одного и того же алгоритма нередко требуется выполнить неодинаковое число команд. Точное соотношение скоростей, как и оценки других достоинств конкурирующих МК, остается предметом нескончаемых споров между их поклонниками.

С увеличением тактовой частоты МК возрастает точность программного формирования и измерения интервалов времени. Все изменения и проверки логических уровней сигналов на своих выводах МК выполняет в дискретные моменты, жестко привязанные к фронтам колебаний тактового генератора и машинным циклам. Поэтому, например, МК семейства PICmicro с кварцевым резонатором на 4 МГц не способен обрабатывать сигналы, изменяющиеся чаще, чем один раз в микросекунду. Фактически дискретность отсчета времени бывает еще большей, так как для вычисления или обработки очередного значения сигнала процессору требуется, как правило, выполнить несколько команд программы.

Не исключение и встроенный в МК таймер, который даже при подсчете подаваемых извне импульсов синхронизируется внутренним тактовым генератором. Однако предварительный делитель таймера -обычный асинхронный счетчик, скорость работы которого ограничена лишь быстродействием образующих его триггеров. Этот факт использован, например, в частотомере [журнал Радио 2001 № 1ст. 21,22], способном измерять частоту сигналов до 50 МГц и выше.

ПРОДОЛЖЕНИЕ СЛЕДУЕТ >>>>>

Все вопрсы на ФОРУМ


Раздел: [Схемы]

Сохрани статью в:

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


Наше сообщество в VK, а ты с нами? Присоединяйся!!!
Тясячи схем в категориях:
-> Прочее
-> Измерительная техника
-> Приборы
-> Схемыэлектрооборудования
-> Источники питания (прочие полезные конструкции)
-> Теоретические материалы
-> Справочные материалы
-> Устройства на микроконтроллерах
-> Зарядные устройства (для батареек)
-> Зарядные устройства (для авто)
-> Преобразователи напряжения (инверторы)
-> Все для кулера (Вентилятора)
-> Радиомикрофоны, жучки
-> Металоискатели
-> Регуляторы мощности
-> Охрана (Сигнализация)
-> Управление освещением
-> Таймеры (влажность, давление)
-> Трансиверы и радиостанции
-> Конструкции для дома
-> Конструкции простой сложности
-> Конкурс на лучшую конструкцию на микроконтроллерах
-> Конструкции средней сложности
-> Стабилизаторы
-> Усилители мощности низкой частоты (на транзисторах)
-> Блоки питания (импульсные)
-> Усилители мощности высокой частоты
-> Приспособления для пайки и конструирования плат
-> Термометры
-> Борт. сеть
-> Измерительные приборы (тахометр, вольтметр итд)
-> Железо
-> Паяльники ипаяльные станции
-> Радиопередатчики
-> Вспомогательные устройства
-> Телевизионная техника
-> Регуляторы тембра, громкости
-> Блоки питания (лабораторные)
-> Усилители мощности низкой частоты (на микросхемах)
-> Другие устройства для усилителей
-> Cветовое оформление новогодней ёлки или праздничного зала
-> Глушилки
-> Телефонные жуки
-> Инфракрасная техника
-> Медицинская техника
-> Телефония
-> Для животного мира
-> Конструируем усилители
-> Антенны и усилители к ним
-> Звонки
-> Электронные игрушки
-> Усилители мощности низкой частоты (ламповые)
-> Управление двигателями (питание от однофазной сети)
-> Программаторы микроконтроллеров
-> Сверлилки
-> Изучаем микроконтроллеры
-> Радиоприемники
-> Сигнализации
-> Сотовая связь
-> USB-устройства
-> Блоки питания (трансформаторные)
-> Радиостанции простые в изготовлении
-> Источники питания (для усилителей)
-> Прочеее
-> защита от короткого замыкания (электронные предохранители)
-> Зарядные устройства (для радиостанций)
-> Мигалки
-> Cварочное оборудование
-> Кодовые электронные замки
-> Блоки питания (бестрансформаторные)
-> Часы
-> Управление поворотниками
-> Зажигание
-> Управление водой (насосы для скважин или колодцев, полив растений)
-> Моделирование
-> Блоки управления стеклоочистителями
-> Предварительные усилители
-> Защита от перегрузки и перегрева
-> Динамики
-> Ремонт бытовой техники
-> Дистанционное управление компьютером
-> Акустические микрофоны и преобразователи
-> Спутниковое ТВ
-> Gsm антенны, примочки, усилители, ретрансляторы.
-> Пищалки
-> Роботы
-> Ретрансляторы
-> Паяльники и паяльные станции
-> Звуковые сигнализаторы
-> Рули и джойстики
-> Схемы электрооборудования
-> Все для "кулера" (Вентилятора)
-> Работа с BGA микросхемами
-> Фильтры
-> Сабвуферы
Рейтинг@Mail.ru