Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПТ 2013 ШПОРЫ.docx
Скачиваний:
300
Добавлен:
15.04.2015
Размер:
669.17 Кб
Скачать

17. Аналого-цифровое преобразование в pic-микроконтроллерах: структура внутреннего ацп, функции управления ацп на языке с18.

Все микроконтроллеры семейства PIC18 имеют встроенные многоканальные аналого-цифровые преобразователи (АЦП), используемые для преобразования аналогового входного напряжения в диапазоне от 0 до UDD (напряжение питания МК) в цифровой код. АЦП выдают 10-разрядный код, а число аналоговых каналов зависит от конкретного типа МК. Так, например, PIC18F242 имеет 6 аналоговых каналов. Для ввода аналоговых сигналов обычно используются линии порта А, которые требуется настроить на ввод.

После запуска АЦП требуется определенное время, называемое временем преобразования, необходимое для преобразования аналогового входного напряжения в цифровой код. Изменение входного напряжения во время процесса преобразования вносит нежелательную погрешность в генерируемый выходной код. Для уменьшения этой погрешности на входе АЦП включают устройство выборки-хранения (УВХ), состоящее из аналогового ключа и запоминающего конденсатора. Ключ замыкается при выборе канала АЦП, а конденсатор, после заряда, сохраняет значение входного напряжения канала на постоянном уровне, пока АЦП выполняет преобразование.

Длительность временного интервала, который требуется для заряда запоминающего конденсатора, определяется параметрами входной цепи, а также температурой окружающей среды. В большинстве случаев можно принять, что максимальное время заряда запоминающего конденсатора не превышает 20 мкс.

Модуль АЦП имеет внутренний делитель частоты, обеспечивающий деление тактовой частоты МК в 2, 4, 8, 16, 32 и 64 раза. Встроенный RC-генератор с частотой 250 кГц обычно используется для АЦ-преобразования в тех случаях, когда сам МК переводится в энергосберегающий режим SLEEP.

Минимальное время преобразования АЦП определяется суммарным временем, которое требуется для установки времени на запоминающем конденсаторе и для полного завершения самого АЦ-преобразования.

Результат АЦ-преобразования запоминается в двух регистрах МК: старший байт в ADRESH и младший байт в ADRESL. Этот результат может размещаться в двух различных форматах, которые называются:

- с правым выравниванием; - с левым выравниванием.

В формате «с правым выравниванием» в шесть старших разрядах регистра ADRESH записываются нули, а в два младших разряда - соответственно два старших бита полученного результата.

В формате «с левым выравниванием» восемь старших бит результата записываются в регистр ADRESH, а младшие биты результата запоминаются в регистре ADRESL.

Библиотека функций управления аналогово-цифровым преобразователем компилятора С18

Для облегчения разработки программ управления встроенным аналогово-цифровым преобразователем микроконтроллеров семейства PIC18 в библиотеке пакета MCC18 имеются несколько функций, которые являются специфическими для компилятора С18 и не существуют в стандартной библиотеке ANSI C. Функции приведены в таблице. Полное описание этих функций дано в заголовочном файле с именем adc.h.

Функции компилятора С18 для АЦП

Функция

Описание

OpenADC( )

Конфигурирует АЦП

SetChanADC( )

Выбирает канал, который будет использоваться

ConvertADC( )

Запускает АЦП

BusyADC( )

Проверяет, занят ли сейчас АЦП

ReadADC( )

Считывает результат преобразования АЦП

CloseADC( )

Отключает АЦП

Пример записи функций:

  1. OpenADC(ADC_FOSC_4 & ADC_RIGHT_JUST & ADC_1ANA_ 0REF, ADC_CH0 & ADC_INT_OFF); /* Эта функция задает тактирование АЦП от генератора МК, коэффициент деления частоты FOSC равен 4; правое выравнивание результата АЦ-преобразования; один аналоговый вход AN0, опорные напряжения UREF+ = UDD, UREF- = USS ; выбирается канал 0 (вход AN0); запрещаются прерывания от АЦП. */

  2. SetChanADC(ADC_CH0); /* Выбирается канал 0, т.е. аналоговый сигнал должен подаваться на линию AN0 (вывод RA0 порта А). */

  3. void ConvertADC(void); /* Функция ConvertADC( ) осуществляет запуск (старт) АЦ-преобразования. */

  4. char BusyADC(void); /* Эта функция возвращает значение 1, если АЦП выполняет преобразование (АЦП занят), и возвращает значение 0, если АЦП не выполняет преобразование (АЦП свободен). */

  5. int ReadADC(void); /* Эта функция возвращает двухбайтное число, в котором размещается 10-разрядный код АЦП. */

  6. void CloseADC(void); /* Эта функция отключает модуль АЦП, при этом он не потребляет ток от источника питания. */

Для осуществления АЦ-преобразования входного сигнала программа МК должна сделать следующие действия:

  • выполнить конфигурацию АЦП с помощью задания соответствующих аргументов в функции OpenADC( );

  • выбрать канал для ввода аналогового сигнала с помощью ф-и SetChanADC( );

  • выполнить задержку на время 20 мкс для заряда конденсатора схемы выборки-хранения;

  • запустить преобразование с помощью функции ConvertADC( );

  • производить периодический опрос готовности данных АЦП с помощью функции BusyADC( ) (если не используется прерывание от АЦП);

  • в случае готовности данных считать результат АЦ-преобразования с помощью функции ReadADC( ).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]