
- •Алматы 2011
- •1 Лекция 1. Микроконтроллеры в современном мире
- •2 Лекция 2. Выполнение арифметических операций в мп
- •3 Лекция 3. Регистры общего и специального назначения
- •4 Лекция 4. Косвенная адресация. Логика. Маскирование
- •5 Лекция 5. Маскирование. Стек
- •7 Лекция 7. Выполнения умножения и деления
- •8 Лекция 8. Программирование клавиатуры. Дешифратор.
- •9 Лекция 9. Основные элементы цифровой техники
- •10 Лекция 10. Структура микроконтроллера, 2-10 система
- •11 Лекция 11. Прерывания и сторожевой таймер
- •12 Лекция 12. Фактор времени и аналоговый мир
- •Приложение а Список некоторых сокращений
- •Литература
- •Оглавление
- •0 50013, Алматы, Байтурсынова, 126
12 Лекция 12. Фактор времени и аналоговый мир
Цель лекции: научить студентов работать с временными факторами и обрабатывать аналоговые сигналы с применением цифровой техники.
12.1 Модуль таймера TMR1
Во многих системах ключевые операции связаны со временем. Это может быть измерение длительности какого-либо события, подсчет числа внешних событий или же управление внешним объектом в течение определенного периода времени. В качестве примера можно указать задачу измерения интервала между импульсами, формируемыми датчиком при прохождении мимо него зубцов маховика коленчатого вала двигателя. Это значение используются для определения скорости вращения вала.
В тех случаях, когда время становится одним из важнейших критериев, для реализации указанных функций обычно используются аппаратные счетчики, а не программно – формируемые задержки.
Управляют работой таймера TMR1 регистры специального назначения PIR1, TICON, INTCON, TMR1, TMR1H, TMR1L.
TMR1 – 16-разрядный таймер/счетчик, состоящий из двух 8-разрядных регистров (TMR1H и TMR1L), доступных для чтения и записи. Счет выполняется в спаренных регистрах (TMR1H и TMR1L). Инкрементируя их значение от 0000h до FFFFh. Если добавить единицу регистр переполняется и далее считает с 0000h. При переполнении счетчика устанавливается в '1' флаг прерывания TMR1IF в регистре PIR1<0>. Само прерывание можно разрешить/запретить установкой/сбросом бита TMR1IE в регистре Р1Е1<0>.
TMR1 может работать в режимах: режим таймера, режим счетчика.
Включается TMR1 установкой бита TMR1ON в ‘1’ (T1CON<0>).
Битом TMR1CS (T1CON<1>) выбирается источник тактовых импульсов. Счетчики TMR1 инкрементируются при каждом машинном цикле.
Когда включен генератор тактовых импульсов (T1OSCEN=1), выводы RC1/T1OSI/CCP2 и РС0/T1OSO/TICK1 настроены как входы. Значение битов TRISC<1:0> игнорируется, а чтение данных с этих выводов дает результат '0'.
Управляющие биты TMR1 находятся в регистре T1CON.
Предделитель TMR1 очищается при записи в TMR1L или TMR1H.
Регистр PIE1 (адрес 8Ch) доступен для чтения и записи, содержит биты разрешения периферийных прерываний. Чтобы разрешить периферийные прерывания необходимо установить в '1' бит PEIE(INTCON<6>).
Регистр INTCON (адреса 0Вh, 8Вh, 10Вh или 18Вh) доступен для чтения и записи. Он содержит биты разрешений и флаги прерываний: переполнение TMR1; изменения уровня сигнала на выводах PORTB; внешний источник прерываний RB0/INT.
Примечание. Флаги прерываний устанавливаются при возникновении условий прерываний вне зависимости от соответствующих битов разрешения и бита общего разрешения прерываний GIE (INTCON<7>).
Регистр
PIR1
доступен для чтения и записи, содержит
флаги прерываний периферийных модулей.
Примечание. Флаги прерываний устанавливаются при возникновении условий прерываний вне зависимости от соответствующих битов разрешения и бита общего разрешения прерываний GIE (INTCON<7>). Программное обеспечение пользователя должно сбрасывать соответствующие флаги при обработке прерываний от периферийных модулей.
12.2 Применение таймера TMR1.
Создадим программу, применяющую таймер, для автоматической окрасочной камеры, описанной в лабораторной работе «Подпрограммы». Дополнительно будем пересчитывать окрашенные детали.
Фрагменты программы. Курсивом отмечены дополнительные команды, управляющие работой таймера.
Include <p16F877.inc>; подключаем библиотеку символов.
T_reg EQU h'20'; регистр, определяющий время задержки.
Kol_det EQU h'21'; регистр, хранящий количество окрашенных деталей.
; настройка МК опущена. Ниже настройка TMR1.
BSF STATUS, 5
CLRF TRISC
CLRF PIE1; запрещаем периферийные прерывания.
BCF STATUS, 5
CLRF T1CON; установка TMR1 в режим ожидания, тактирование TMR1 от внутреннего генератора, значение предделителя частоты =1:1.
CLRF TMR1H; очищаем старший регистр-счетчик TMR1.
CLRF TMR1L; очищаем младший регистр-счетчик TMR1.
CLRF INTCON; запрещаем прерывания от TMR1.
MOVLW b'00110000'; тактирование от внутреннего генератора
MOVWF T1CON; устанавливаем предделитель частоты =1:8.
Рабочая часть программы совпадает с программой лабораторной работы «Подпрограммы». Подпрограмма Timer заменяется подпрограммой Timer2.
GOTO$
Timer2; подпрограмма с TMR1.
MOVWF T_reg; задание времени задержки.
M_T_reg;
BCF PIR1, TMR1IF; сброс флага переполнения таймера в каждом цикле.
BSF T1CON, TMR1ON; запуск таймера TMR1.
; следующие три строки это циклы работы таймера TRM1
M_ TRM1; метка
BTFSS PIR1, TMR1IF; проверка флага переполнения таймера
GOTO M_ TRM1; если флага нет, то цикл TRM1 продолжается.
DECFSZ T_reg, F; уменьшаем число в регистре и проверяем на ноль.
GOTO M_T_reg; (только при Z=0) время не кончилось, повторяем цикл.
RETURN
END
12.3 Аналоговый мир
Принимая во внимание тот факт, что основной задачей цифровых микроконтроллеров является отслеживание и управление состоянием реального окружения, параметры которого, как правило, измеряются аналоговыми датчиками, нам придется рассмотреть методы взаимодействия между аналоговым и цифровым миром. Часто все, что нам требуется, - это сравнить уровни двух аналоговых сигналов. Однако в более сложных случаях входной аналоговый сигнал необходимо преобразовывать в его цифровой эквивалент, т.е. выполнять аналого-цифровое преобразование (АЦП) В дальнейшем полученный двоичный код можно будет обработать привычным образом. И наоборот, если выходной сигнал должен быть аналоговым, необходимо выполнять цифро-аналоговое преобразование (ЦАП).
Из этих операций, схематично изображенных на рисунке 12.1, наиболее сложной является операция аналого-цифрового преобразования. Во многих микроконтроллерах PIC имеется встроенный модуль многоканального АЦП. А вот для формирования аналогового выходного сигнала, как правило, приходится использовать дополнительные внешние элементы
Рисунок 12.1. Аналоговый мир — цифровая обработка
Информация, передаваемая при помощи аналогового сигнала, содержится в определенных параметрах, таких как амплитуда, частота или фаза, которые могут принимать любые значения из непрерывного стандартного диапазона величин.
На практике максимальное значение разрешающей способности, необходимое для обработки, определяется шумами и ограниченной точностью источников сигналов.
В цифровых сигналах информация представляется в виде совокупности дискретных символов. Так, в двоичной системе N-битное число может в лучшем случае представлять 2N уровней. Сетку (шаг) квантования можно подобрать таким образом, чтобы обеспечить точность, требуемую для решения каждой конкретной задачи. Так, в системах передачи голоса по телефонным линиям вполне достаточно точности около 1 процента. В этом случае можно использовать 8-битное представление аналогового сигнала, которое даст нам 256 дискретных значений, что соответствует разрешающей способности около 0.5%. В музыкальном компакт-диске используется 16-битное представление (65 536 разрядов) — разрешающая способность около 0.0015%.
В
качестве примера рассмотрим ситуацию,
представленную на рисунке 12.2. В данном
случае входной сигнал преобразуется в
трех – битный код. Процесс квантования
(оцифровки) сигнала заключается в
сравнении аналогового значения со
значениями фиксированного числа уровней
— в данном случае восемью. В качестве
цифрового эквивалента исходного сигнала
принимается ближайший по значению
уровень. На рисунке 12.2 при входном
напряжении 0,4285В, его квантованное
значении принимается по третьему уровню,
т.е. 3/8=0,375В и выражается числом b’011’.
Рисунок 12.2. Процесс квантования
Получившаяся ошибка 0,4285-0,375=-0.0535, называется шумом квантования, и полностью ее избежать невозможно. Кривая распределения ошибки приведена в нижней части рисунка, здесь символ L- число уровней.