В некоторых моделях имеется дополнительный управляющий бит, подключающий выход модуля опорного напряжения к выводу порта, что позволяет использовать его с внешними узлами схемы. Когда бит CVROE (CVRCON[6]) установлен в 1, аналоговое напряжение
Инициализационный код, осуществляющий настройку модулей компаратора и опорного напряжения для нашего примера с дефибриллятором (используется 1-й компаратор, вход которого подключен к RA3), будет иметь следующий вид:
include "p16f877a.inc"
bsf STATUS,RP0; Переключаемся в 1-й банк
movlw b’00001110’; Режим компаратора 110
movwf CMCON; Подключен к RA3 (CIS = 1)
movlw b’10001110’; Модуль CVREF включен (1), наружу не выведен
movwf CVRCON; Верхний диапазон (0), CVR[3:0] = 1110
bsf PIE2,CMIE; Разрешаем прерывания от компаратора
call DELAY_10US; Ждем 10 мкс, пока выходной сигнал модуля установится
movf CMCON,f; Читаем CMCON, чтобы сбросить признак изменения
bcf STATUS,RP0; Возвращаемся в 0-й банк
bcf PIR2,CMIF; Сбрасываем флаг прерывания от компаратора
bsf INTCON,PEIE; Разрешаем прерывания от периферийных устройств
bsf INTCON,GIE; Разрешаем работу системы прерываний
Обратите внимание на то, что перед разрешением прерываний формируется задержка длительностью 10 мкс, необходимая для установления внутренних аналоговых сигналов. Последующее чтение регистра CMCON сбрасывает возможное несоответствие между сохраненным и текущим состоянием компаратора, после чего сбрасывается флаг прерывания от компаратора CMIF. И наконец, как обычно, разрешается работа системы прерываний установкой битов маски PEIE и GIE регистра INTCON.
В документации на некоторые модели, например PIC12F675, данный модуль называется просто модулем опорного напряжения. В таких моделях регистр управления называется VRCON. Соответственно в названии различных битов этого регистра отсутствует первая буква «С», например VREN вместо CVREN.
* * *
Во многих случаях необходимо иметь больше информации об аналоговом сигнале, нежели мы можем получить путем «тупого» сравнения сигнала с опорным напряжением. Возьмем, к примеру, ситуацию, показанную на Рис. 14.5. В данном случае для вычисления мощности импульса нам потребуется определять квадрат отклонения уровня сигнала от базового значения и интегрировать его по времени. В таких случаях входной сигнал после считывания необходимо преобразовывать в цифровую форму.
Функция преобразования аналоговой величины в цифровой эквивалент может быть выражена следующим образом:
где
Чтобы понять, как можно реализовать подобные вычисления на практике, рассмотрим механическую аналогию метода последовательного приближения. Предположим, что у нас имеется объект неизвестной массы
1. Поместить 8 г на тарелку. Если груз слишком тяжелый, то убрать его (
2. Поместить 4 г на тарелку. Если груз слишком тяжелый, то убрать его (
3. Поместить 2 г на тарелку. Если груз слишком тяжелый, то убрать его (
4. Поместить 1 г на тарелку. Если груз слишком тяжелый, то убрать его (