Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
Глава 6
ДОБРО ПОЖАЛОВАТЬ В РЕАЛЬНЫЙ МИР!
ПОСЛЕ ИЗУЧЕНИЯ ГЛАВЫ ВЫ СМОЖЕТЕ:
• Определить реальные ограничения проекта, которые могут не позволить микроконтроллерной системе правильно работать.
• Изложить правила обращения с устройствами на базе КМОП и разработать рекомендации.
• Определить источники и внутренних и внешних помех для микроконтроллерной системы.
• Перечислить основные организации, ответственные за обеспечение директив и руководств по электромагнитной совместимости (ЭМС).
• Рассказать о методах проектирования, позволяющих минимизировать чувствительность к помехам.
• Применить программные методы защиты, чтобы минимизировать чувствительность к помехам.
• Описать методы обнаружения помех.
• Применить методы управления питанием, позволяющие снизить мощность, потребляемую микроконтроллерной системой.
• Понять изменения, определяемые выбором батарейного источника питания для микропроцессорной системы.
• Определить основные свойства супервизоров для управления микропроцессорами.
• Определить и реализовать меры энергосбережения.
Что можно сказать обо всей этой главе? После того, как вы рассмотрели цели главы, вы могли бы подумать, что глава представляет собой совокупность собранных с бору по сосенке разделов, которые неудобно размещать в любой другой главе. Мы согласны с тем, что в главе рассматривается много различных тем; однако, все они связаны общей нитью. Если при разработке реальных устройств проигнорировать любую из рассматриваемых здесь проблем, система вообще не сможет функционировать. Хуже все то, это поведение схемы при этом может носить случайный, непредсказуемый, или невоспроизводимый характер. В этой главе мы имеем дело с реальными проблемами разработки, которые необходимо решать. Мы приводим всесторонний список исходных материалов для дальнейших разделов, в которых читатель может разыскать дополнительную информацию.
6.1. Ужасные истории об ошибках проектирования
Мы начнем с нескольких «ужасных историй» о проектах, которые работали неправильно. Обратите особое внимание на специфические причины этих сбоев. После этого мы покажем Вам некоторые методы, которые позволяют превратить хороший проект, созданный на бумаге, в нормально работающее практическое устройство.
6.1.1. Случай квадратичного генератора
Прежде, чем обсудить первый случай, приведем некоторую основную информацию о восстановлении сигнала. Полезная методика создания аналогового сигнала заданной формы, состоит в том, чтобы разделить сигнал на ряд аналоговых данных. Аналоговые значения в отдельных точках преобразуются затем в двоичные коды от $00 до $FF. При этом минимальный сигнал в 0 В соответствует числу $00, а максимальный сигнал, например, в 5 В соответствует числу $FF. Аналоговые данные, расположенные между этими двумя экстремальными значениями преобразуются по линейному закону в 8-разрядный двоичный код. Не правда ли эта методика что-то вам напоминает? Конечно, это процесс аналого-цифрового преобразования (АЦП), который мы уже обсуждали в главе 4.
Чтобы восстановить аналоговый сигнал, отдельные двоичные коды последовательно пересылаются на цифро-аналоговый преобразователь (ЦАП). Перед тем, как продолжить рассмотрение, проведем короткий обзор основных концепций для ЦАП.
Цифро-аналоговый преобразователь. Цифро-аналоговый преобразователь (ЦАП) преобразует входной многоразрядный двоичный код в соответствующий аналоговый выходной сигнал (см. рис. 6.1). Мы не будем обсуждать различные методы преобразования, применяемые в ЦАП. Мы просто представим ЦАП как «черный ящик» и опишем его функции с помощью блок-схемы. Аналоговый выходной сигнал создается суммированием взвешенных двоичных входных сигналов, как показано на рисунке.
Рис.6.1. Цифро-аналоговый преобразователь
Цифро-аналоговый преобразователь (ЦАП) преобразует многоразрядный двоичный входной код в соответствующий аналоговый выходной сигнал. Аналоговый выходной сигнал создается суммированием взвешенных двоичных входных сигналов. Символ UMAX соответствует максимальному напряжению
Например, когда на входе ЦАП формируется код $CA, старший двоичный бит умножается на половину значения UMAX. Следующий по старшинству бит умножается на четвертую часть UMAX и так далее. Все взвешенные биты суммируются, давая в результате аналоговое значение.
Примем, что FS = VRH – VRL представляет собой максимальный размах напряжения для 8-разрядного 5-вольтового ЦАП. В этом случае высокий уровень опорными напряжениями составляет 5 В, а низкий — с 0 В. А как определить, например, аналоговое выходное напряжение соответствующее двоичному входному коду $CA?
Это напряжение можно определить, используя следующую взвешенную сумму для входного кода $CA:
UВЫХ = 5 [(1×1/2) + (1×1/4) + (0×1/8) + (0×1/16) + (1×1/32) + (0×1/64) + (1×1/128) + (0×1/256)] = 3,945 В
Аналоговый сигнал может быть затем создан путем цифровых данных на входах ЦАП, чтобы получить аналоговую реконструкцию. Методика восстановления аналогового сигнала из отдельных двоичных точек может использоваться при многих различных типах сигналов [Barrett 1979, Welch 1997].
Обсудим теперь сбой в разрабатываемом квадратичном генераторе. На рис. 6.2 показано, как эта методика может использоваться, чтобы генерировать сигналы, связанные квадратичной зависимостью (напряжения синусоидальной и косинусоидальной формы). Схема включает в себя программируемый кварцевый CMOS генератор PXO1000 фирмы Statek. Частота генератора устанавливается вручную с помощью DIP переключателей. Генератор является таймером для 8-разрядного двоичного счетчика на базе CMOS, который обеспечивает непрерывный счет от $00 до $FF. Выходной сигнал этого счетчика подается на две отдельных NMOS микросхемы памяти EPROM размером 2048 б, которые сохраняют данные для синусоидальной и косинусоидальной волны. Выходные сигналы с микросхем памяти подаются на отдельные 8-разрядные CMOS цифро-аналоговые преобразователи, которые опять преобразуют отдельные двоичные данные в аналоговый сигнал. Сигналы с ЦАП подаются на операционные усилители, которые осуществляют сдвиг нулевого уровня выходного сигнала ЦАП, и могут также обеспечить подстройку коэффициента усиления.
Рис. 6.2. Квадратичный генератор
На бумаге проект работает вполне правильно. Однако, когда схема была реализована, оказалось, что она является хорошим генератором помех. В чем была проблема? В первоначальном проекте отсутствовали резисторы сопротивлением 4.7 К в выходных цепях NMOS памяти. В главе 5 мы указали, что мы можем обычно напрямую связывать входы и выходы микросхем одного семейства. Однако, при соединении микросхем из различных семейств, мы должны быть очень осторожны. Обратите внимание, что в этом проекте, мы переходим от счетчика CMOS к памяти NMOS и затем обратно на ЦАП CMOS. Мы должны тщательно спроектировать интерфейс между CMOS и NMOS и затем интерфейс NMOS к CMOS. Чтобы эта схема правильно работала, должны быть включены нагрузочные резисторы в выводы NMOS. Это позволяет входам ЦАП на базе CMOS правильно распознавать состояния выходов NMOS. Нагрузочные резисторы показаны на рис. 6.2.
Из этого примера вы можете видеть важность тщательного выбора цепей связи между всеми компонентами внутри схемы. Особую осторожность следует проявлять при соединении микросхем из различных семейств.
6.1.2. Случай таймера для лазерного излучения
Рассмотрим теперь экспериментальную установку для научно-исследовательской работы, которая касалась методов задания времени облучения для записывающего лазера. В эксперименте, лазер управлялся ТТЛ-совместимым импульсом, формируемым ПК. При высоком значении импульса, лазерный затвор был открыт, при низком — закрыт. Цель экспериментов состояла в том, чтобы изучить влияние лазера на ткани глаза при глазной хирургии. В идеале, мы хотели бы привязать работу лазера к временной метке видеозаписи эксперимента. В коммерческом проекте задания времени было найдено и проверено оборудование, обеспечивающее оптимальную стоимость для малобюджетного проекта.
После рассмотрения имеющихся на рынке микросхем, были выбраны цифровые таймеры серии 74LSXX. Компоненты использовались, чтобы создать пятиразрядный счетчик, который управлял бы несколькими семисегментными дисплеями с помощью микросхем драйверов дисплея. Считывание с семисегментных дисплеев производилось оптически объективом фотокамеры, производящей запись эксперимента. Электроника счетчика/дисплея была установлена в пластмассовом корпусе, и окно было вырезано так, чтобы были видны показания дисплея, как это показано на рис. 6.3.