Каталог статей

Главная » Все схемы » Теория » Изучаем микроконтроллеры

Выбранная схема!!!


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

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

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

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

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


Всего положений - пять, но различить по сигналам датчиков исходное, и конечное невозможно, поэтому они обозначены одинаково - 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.


Обратите внимание, что, кроме выделенной утолщенными линиями "правильной" последовательности переходов между вершинами графа, завершающейся увеличением (переход от 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 МГц и выше.

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

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


Категория: Изучаем микроконтроллеры | Добавил: Volodya215 (25.02.2013)
Просмотров: 6864 | Теги: прошивка, разработка, МК, отладка, НА, часть, устройств | Рейтинг: 5.0/22


Всего комментариев: 0

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

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

Имя *:
Email:
Код *:

Copyright Zloy Soft (Company) © 2008 - 2024