В некоторых моделях имеется дополнительный управляющий бит, подключающий выход модуля опорного напряжения к выводу порта, что позволяет использовать его с внешними узлами схемы. Когда бит CVROE (CVRCON[6]) установлен в 1, аналоговое напряжение
Инициализационный код, осуществляющий настройку модулей компаратора и опорного напряжения для нашего примера с дефибриллятором (используется 1-й компаратор, вход которого подключен к RA3), будет иметь следующий вид:
include "p16f877a.inc"
bsf STATUS,RP0
; Переключаемся в 1-й банкmovlw b’00001110’
; Режим компаратора 110movwf CMCON
; Подключен к RA3 (CIS = 1)movlw b’10001110’
; Модуль CVREF включен (1), наружу не выведенmovwf CVRCON
; Верхний диапазон (0), CVR[3:0] = 1110bsf 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 г на тарелку. Если груз слишком тяжелый, то убрать его (