- PNJ — Core Independent Peripheral в микроконтроллерах Microchip, также известный как CIP — Core Independent Peripheral. Часть 3 Предыдущие статьи [
Теперь давайте посмотрим на аналого-цифровой преобразователь (АЦП), и в частности на новый АЦП с пост-вычислителем.
Как вы, вероятно, уже привыкли, новые периферийные функции могут помочь реализовать определенные функции и упростить код для микроконтроллеров PIC. В отличие от предыдущих частей, в этой будет чуть больше теории и чуть меньше примеров.
Содержание
- Обзор возможностей АЦП
- Курок
- UVH, CVD, двойное преобразование
- Посткалькулятор, фильтрация, усреднение
- Примеры конфигурации
- Автозапуск, фильтрация
- Автозапуск, CVD, усреднение, прерывание в зависимости от пороговых значений
- Автозапуск, дифференциальное CVD, серия преобразований, усреднение
- Полученные результаты
Многие семейства PIC16F1xxx имеют АЦП с возможностью запуска по событиям, а совершенно новые семейства PIC16F188xx имеют еще и посткомпьютер.
Давайте рассмотрим возможности АЦП на примере микроконтроллера семейства PIC16F18855/75. АЦП контроллеров этого семейства имеет:
- 8-битный таймер предварительной выборки (таймер сбора данных)
- Аппаратная поддержка емкостного делителя напряжения (CVD):
- 8-битный таймер предварительной зарядки
- Массив конденсаторов для регулировки емкости UVH
- Выходной драйвер защитного кольца
- Автоматическое повторение и последовательность:
- автоматическое двойное преобразование для CVD
- Два набора регистров результатов (результат и предыдущий результат)
- Триггер автоматического преобразования
- Внутренний повторный триггер
- Возможности калькулятора:
- Усреднение и фильтр нижних частот
- Сравнение с эталонным значением
- Двухуровневое сравнение порогов
- Выбираемые прерывания
1):
Рис.
1. Структура АЦП с вычислителем семейства PIC16F18855.
Триггер АЦП
Прошли те времена, когда вам приходилось «вручную» устанавливать бит для запуска измерения АЦП.Теперь АЦП может срабатывать по следующим событиям:
- внешний вход;
- срабатывание таймеров (общего назначения и SMT – 24-битные таймеры измерения сигнала);
- модуль сравнения выходов и ШИМ;
- сработал компаратор;
- изменение состояния входов, сконфигурированных как прерывания изменения состояния;
- вывод логических ячеек;
- считывание результата измерения АЦП;
- изменение номера канала АЦП.
УВГ и ССЗ
Устройство выборки/хранения (СХД) получило дополнительные возможности, связанные в основном с упрощением определения емкости АЦП, подключенного к входу.Прежде всего, это помогает при создании интерфейсов с емкостными (сенсорными) кнопками.
Микросхема предлагает определять емкость датчика с помощью емкостного делителя напряжения (CVD).
Сущность метода сводится к следующему.
На первом этапе (см.
рис.
2) вход датчика подключается к земле (его емкость разряжается), а канал АЦП подключается к напряжению питания, емкость УВГ заряжается.
Затем вход датчика подключается к АЦП UVH, и заряд перераспределяется между емкостью датчика и емкостью UVH. Затем измеряется напряжение на УФ-емкости.
Входной контроль CVD | Форма волны сердечно-сосудистых заболеваний |
---|---|
|
|
2. Диаграммы, поясняющие измерение емкости с помощью емкостного делителя напряжения.
При прикосновении к датчику его емкость будет меняться, а это значит, что мы будем фиксировать разные значения установившегося напряжения на емкости УВХ.
Для снижения влияния наведенных шумов на датчик и/или оператора используется дифференциальный CVD, состоящий из двух последовательных измерений с помощью CVD, но на втором этапе инвертируем заряды на датчике и УВГ (заряжаем датчик на напряжение питания, и разрядить УВХ емкость, см.
рис.
3).
Рис.
3. Диаграмма сигналов дифференциального CVD. Подробно о емкостных датчиках, дифференциальном методе CVD и контроле защитного проводника можно прочитать здесь.
связь [2].
Новый АЦП с посткалькулятором для поддержки и автоматизации CVD имеет следующие функции:
- таймер предварительной зарядки
- контроль последовательности заряда (требуемая полярность), запуск измерения;
- подключение дополнительных внутренних баков к УВХ;
- два последовательных измерения;
- вычисление разницы между двумя измеренными значениями;
- водительское управление «охранное кольцо».
Пост-калькуляторные функции
Посткалькулятор выполняет несколько функций.
Фильтрация
Модуль АЦП может работать в одном из пяти режимов: Основной режим.В этом режиме АЦП может произвести одно или два измерения, после каждого из которых может быть установлен флаг прерывания.
Накопление.
Для каждого измерения результат суммируется с аккумулятором и счетчик измерений увеличивается.
Усреднение.
Для каждого измерения результат суммируется с аккумулятором и счетчик измерений увеличивается.
При достижении заданного количества повторений результат делится и поступает в модуль сравнения, а следующее измерение обнуляет счетчик в 1 и значение аккумулятора заменяется результатом первого измерения.
Усреднение очереди.
При запуске АЦП происходит очистка батареи и счетчика измерений и производится серия измерений заданное количество раз, после чего результат делится и отправляется в модуль сравнения.
Фильтр нижних частот. Каждое измеренное значение проходит через фильтр нижних частот. По завершении заданного количества измерений результат поступает в модуль сравнения.
Расчет ошибки
По завершении каждого расчета результат фиксируется до окончания следующего измерения.Разница между:
- текущее и предыдущее измерение (первая производная одного измерения);
- два результата в режиме измерения CVD (рассчитывается дифференциальное CVD);
- текущий результат и константа (заданное значение);
- текущий результат и отфильтрованное значение;
- текущие и предыдущие отфильтрованные значения (первая производная от отфильтрованного результата);
- фильтрованное значение и константа (заданное значение).
Сравнение с пороговыми значениями
Результат расчета ошибки сравнивается с верхним и нижним порогами.Кроме того, прерывание может быть сгенерировано, если:
- ошибка меньше нижнего порога;
- ошибка больше или равна нижнему порогу;
- ошибка лежит между порогами;
- ошибка вне пороговых значений;
- ошибка меньше или равна верхнему порогу;
- ошибка превышает верхний порог;
- генерация прерывания независимо от результата сравнения с порогами (данный режим может быть полезен для фиксации самого факта сравнения, т.е.
когда, например, нужно получить данные фильтрации/усреднения после N-измерений, а не прерывание после каждое измерение).
Примеры конфигурации АЦП
Автозапуск, Фильтрация
В этом примере показано, как настроить АЦП в плагине Mplab Code Configuration (MCC) для выполнения следующих действий:- Таймер2 настроен на срабатывание каждые 1 мс;
- АЦП срабатывает при срабатывании таймера.
АЦП выполняет предварительную выборку и измерение, результат поступает в фильтр.
После накопления 32 отфильтрованных измерений производится сдвиг на 5 бит (деление на 32) и выдается запрос на прерывание.
Программе необходимо только прочитать полученное отфильтрованное значение из регистра при прерывании.
Рис.
4. Настройки АЦП с компьютером.
Рис.
5. Чтение «сырых» и отфильтрованных данных с АЦП.
Автозапуск, CVD, усреднение, прерывание в зависимости от пороговых значений
Этот пример основан на реализации " быстрое создание емкостного датчика " от microchip.wikidot.com [5].Выбрана следующая конфигурация:
- Таймер2 настроен на срабатывание каждые 10 мс.
- АЦП срабатывает при срабатывании Таймера 2. АЦП производит измерения методом CVD и рассчитывает среднее значение 32 измерений.
После выполнения 32 измерений и накопления результата происходит деление на 32 (сдвиг на 5) и если итоговое значение выходит за пределы пороговых значений, то генерируется запрос на прерывание, сообщая таким образом о «касании» и «отпускании» прикосновения.
кнопка (фактически в этом примере каждый раз генерируется прерывание, так как кнопка либо нажата, либо нет и не имеет промежуточных состояний))
Рис.
6. Настройки АЦП для CVD.
Рис.
7. Реакция на нажатие сенсорной кнопки с одним CVD. Установка порога может дать нам прерывание не для каждого измерения/серии измерений с фильтрацией, а по нажатию «кнопки».
Автозапуск, дифференциальное CVD, серия преобразований, усреднение
В этом примере используется следующая конфигурация периферийных устройств:- Таймер2 настроен на срабатывание каждые 10 мс.
- АЦП срабатывает при срабатывании таймера (см.
рисунок 8, точка 1).
АЦП производит последовательные измерения методом дифференциального CVD (п.
2) со сменой полярности (п.
3), вычисляет производную (разницу между 2-м CVD) (п.
4), АЦП настроен на вычисление среднего значения (п.
4).
п.
5) 32-х мерок (п.
6).
После выполнения 32 пар измерений и накопления результата производится деление на 32 (п.
7) и запрос прерывания (п.
8), последующие измерения останавливаются (п.
9) до следующего срабатывания триггера запуска (Таймер2).
Рис.
8. Настройки АЦП для опции дифференциального CVD.
Рис.
9. Схема входа датчика с дифференциальным CVD.
Рис.
10. Реакция на нажатие сенсорной кнопки при дифференциальном CVD Из сравнения ССЗ (рис.
7) и дифференциального ССЗ (рис.
10) видно, что второе отличается более «чистым» сигналом с большей амплитудой.
Вся описанная последовательность действий выполняется полностью автоматически и независимо от ядра — в это время МК может совершать какие-то другие действия или находиться в режиме микропотребления Sleep. После прерывания остается вычислить среднее значение результата измерения.
Полученные результаты
Мы рассмотрели еще одну часть Периферии, Независимой от Ядра – АЦП с компьютером в микроконтроллерах Microchip. Некоторые возможности, такие как триггерный запуск, или CVD, присутствуют во многих семействах PIC16F1xxx, но в семействе PIC16F188xx (PIC16F18855 и др.) появилась новая «фича» — ADCC (АЦП с компьютером).
Независимая от ядра периферия интересна сама по себе, но наибольшую выгоду может принести возможность синтеза функциональных блоков, т.е.
совместного использования нескольких периферийных модулей для решения конкретных задач.
При этом тактовая частота, скорость и разрядность ядра отходят на второй план — аппаратное обеспечение выполняет специализированные функции, а ядро занимается программной поддержкой продукта.
P.S. Вопрос к читателям.
Стоит ли выкладывать исходники примеров для конкретной (дешевой) демонстрационной платы или из описаний все понятно и примеры кода не нужны? Литература:
- Настраиваемые логические ячейки в PIC-контроллерах
- 50 оттенков пня.
Порты ввода-вывода
- Технология mTouch(TM).
Создание емкостных клавиатур, сенсоров и экранов.
- Технический паспорт PIC16(L)F18855/75. www.microchip.com
-
Поисковый Трансформатор В Картинках
19 Oct, 24 -
Обновление Mozilla Firefox 2.0.0.10
19 Oct, 24 -
Создание Игр Без Холста: Matreshka.js
19 Oct, 24