- •Эрни Каспер Программирование на языке Ассемблера для микроконтроллеров семейства i8051
- •1.Что нужно знать программисту о микроконтроллерах семейства i8051
- •1.1.Общие сведения об архитектуре i8051
- •1.2.Правила записи команд микроконтроллера семейства i8051 на Ассемблере
- •1.3.Форматы и способы адресации данных
- •1.4.Форматы и способы адресации команд
- •1.5.Команды пересылки информации
- •1.6.Команды поразрядной обработки информации
- •1.7.Команды арифметических операций
- •1.8.Управляющие команды
- •2.Директивы ассемблера для микроконтроллеров семейства i8051
- •2.1.Общие понятия о процессах трансляции и компоновки
- •2.2.Обработка имен транслятором и компоновщиком
- •2.3.Директивы резервирования памяти и инициализации данных
- •2.4.Использование выражений в операндах
- •2.5.Директивы условной трансляции
- •2.6.Директивы подстановок
- •2.7.Директивы управления вводом и выводом
- •Глава 3.
- •3.Кросс-средства фирмы 2500 a.D. Software, Inc. Для семейства i8051
- •Глава 4
- •4.Программирование арифметических действий
- •4.1.Кодирование информации в микроконтроллере
- •4.2.Арифметические действия с большими числами
- •4.3.Арифметические действия с отрицательными числами
- •4.4.Контроль точности при программировании арифметических операций
- •Глава 5
- •5.Программирование вычисления функций
- •5.1.Возведение в квадрат и извлечение квадратного корня
- •5.2.Переход от десятичной системы счисления к двоичной и обратно
- •5.3.Вычисление функций при помощи таблиц
- •5.4.Вычисление обратной функции по таблице прямой функции
- •5.5.Компенсация систематических погрешностей при помощи таблиц
- •Глава 6
- •6.Программирование фильтрации сигналов
- •6.1.Особенности цифровой фильтрации сигналов
- •6.2.Программирование простейших фильтров нижних частот
- •6.3.Программирование фильтра для оценки параметров сигнала
- •6.4.Программирование медианного фильтра
- •Глава 7
- •7.Программирование взаимодействия с внешними устройствами
- •7.1.Общие вопросы взаимодействия
- •7.2.Порядок выполнения прерываний в микроконтроллерах семейства i8051.
- •7.3.Синхронизация работы программы внешним или внутренним сигналом
- •7.4.Программирование приема информации от датчиков
- •7.5.Программирование выдачи команд на исполнительные устройства
- •7.6.Программирование ввода и вывода информации для пользователя
- •8.Несколько рекомендаций о стиле программирования
- •8.1.Стиль программирования и использование ресурсов
- •8.2.Оформление исходного текста программы
- •8.3.Системы обозначений, выражения и простые подстановки
- •8.4.Применение подпрограмм и сложных текстовых подстановок
Глава 6
6.Программирование фильтрации сигналов
6.1.Особенности цифровой фильтрации сигналов
Фильтрацией сигналов называется такая их обработка, в результате которой полностью или частично устраняется влияние шумов и помех на полезный сигнал. С самого начала напомним читателям о двух существенных отличиях цифровой обработки сигнала от аналоговой. Эти отличия связаны с дискретизацией обрабатываемых сигналов по уровню и во времени.
Вследствие дискретизации сигналов во времени, то есть использования конечного количества выборок сигнала на заданном интервале времени, может возникнуть погрешность, обусловленная переносом высокочастотных составляющих сигнала в область низких частот. Ярким примером этой погрешности является стробоскопический эффект, встречающийся в некоторых сценах кинофильмов. Особенно режет глаз такая несообразность, как движение какого-либо экипажа в одну сторону с вращением колес, отвечающим его движению в противоположную сторону. Чтобы при цифровой обработке сигналов не возникали аналогичные эффекты, ширина спектра частот обрабатываемого сигнала не должна превышать половины частоты дискретизации. Поэтому до преобразования входного сигнала в цифровую форму необходимо сначала с помощью аналогового фильтра убрать из сигнала высокочастотные составляющие, не несущие полезной информации.
Преобразование значений аналогового сигнала в цифровые является источником погрешности, зачастую называемой "шумом квантования". Ее влияние особенно существенно при малых амплитудах сигнала. При больших амплитудах эта погрешность может быть оценена на основе следующих допущений относительно ее статистических свойств. Предполагается, что погрешность равномерно распределена на интервале, равном шагу квантования сигнала, и выборки погрешности квантования для всех моментов времени независимы. При этом можно считать, что среднее значение шума квантования равно нулю, а среднеквадратичное отклонение примерно в 3,5 раза меньше шага квантования.
В классической теории фильтров спектр сигнала на выходе фильтра получается умножением спектра входного сигнала на частотную амплитудно-фазовую характеристику фильтра. Преобразования сигнала из временного представления в частотное и обратно даже после изобретения алгоритма быстрого преобразования Фурье (БПФ) требуют больших ресурсов и доступны только специализированным цифровым процессорам сигнала (Digital Signal Processor). Разумеется, в части фильтрации сигналов микроконтроллеры семейства i8051 не могут идти ни в какое сравнение с ними. Но часто возникающие на практике простейшие задачи фильтрации им вполне по силам, если не пользоваться спектральным представлением сигналов. В этом случае вычисление выходного сигнала по значениям входного осуществляется преобразованием, называемым в математике сверткой. Это преобразование известно изучавшим теоретическую электротехнику как интеграл Дюамеля.
Для вычисления интеграла необходимо использовать не только текущее значение сигнала, но и информацию о предыдущих его значениях. Интегрирование обычно производится по формуле прямоугольников. Для линейной фильтрации удается подобрать коэффициенты таким образом, чтобы это упрощение вычислений не вносило методической погрешности. При программирования фильтров обычно используются рекуррентные формулы, позволяющие вычислять выходной сигнал как функцию от текущего входного сигнала и некоторого набора предыдущих входных или выходных сигналов. В общем случае цифровой фильтр должен содержать программно реализованную линию задержки, в которой хранится некоторое количество значений сигналов, предшествующих текущему значению. В зависимости от требуемых характеристик эти значения могут непосредственно пересчитываться в выходной сигнал и/или влиять на значения, записываемые в линию задержки.
В отличие от рассмотренных ранее вычислений, которые должны выполняться как можно быстрее, вычисления при фильтрации должны выполняться со строго заданным периодом Т, значение которого вкупе с параметрами расчетной формулы влияет на характеристики фильтра. Далее будут приведены примеры программирования линейных фильтров и нелинейного (медианного) фильтра.