
- •1.Программирование типовых функций управления: опрос двоичного датчика, ожидание события, дребезг, формирование временной задержки, вывод управляющих сигналов
- •Борьба с дребезгом контактов
- •2. Формирование временных задержек с помощью таймеров
- •3.Виды клавиатур
- •Кодирующие клавиатуры.
- •Табличный метод.
- •Метод сдвигов унитарного кода.
- •4.Подключение светодиодов и светод. Семисегментных индикаторов
- •5. Статический метод управления линейным дисплеем.
- •1. С использованием дешифраторов семисегментного кода.
- •2. С использованием программной перекодировки:
- •6. ДинамичесКий метод управления линейным дисплеем.
- •7. Виды ацп, схемы подключения и программы опроса ацп
- •Интерфейс быстрых ацп с мпс
- •Интерфейс медленных ацп с мпс
- •8) Микроконтроллеры pic18: общая характеристика, особенности архитектуры и системы команд.
- •9. Язык с18 для pic-микроконтроллеров: структура программы, директивы препроцессора, ключевые слова.
- •10. Представление информации в языке Си
- •11. Операции и выражения в Си
- •12.Операторы управления вычислительным процессом
- •13. Функции в языке с18: определение функции, прототип, библиотечные функции.
- •14. Функции формирования временных задержек в языке с18
- •15. Программирование на языке с18 типовых функций управления и контроля: вывод информации в порт, управление отдельными разрядами портов, опрос переключателя.
- •16. Подключение жк-дисплея к pic-микроконтроллеру: структура жк-дисплея, функции управления дисплеем.
- •2.2. Библиотека функций управления жк-дисплеем
- •17. Аналого-цифровое преобразование в pic-микроконтроллерах: структура внутреннего ацп, функции управления ацп на языке с18.
- •18. Реализация широтно-импульсной модуляции в pic-микроконтроллерах: параметры шим, функции управления шим на языке с18.
- •19. Прерывания в pic18: источники прерываний, управляющие биты, программирование прерываний на языке с18.
- •24) Интегрированная среда CodeVisionAvr: состав и назначение, структура программы на языке Си в cvavr, управление портами и отдельными битами.
- •25) Программирование в CodeVisionAvr типовых функций управления и контроля: вывод информации в порт, управление отдельными разрядами портов, опрос переключателя, реализация временных задержек.
- •26. Интерфейс can: общее описание и основные параметры, виды и форматы сообщений в can.
- •27. Интерфейс can: арбитраж, обнаружение и обработка ошибок, скорость передачи и длина сети.
- •28. Понятия: микроконтроллерная система (мкс) и микроконтроллерное устройство (мку). Основные этапы разработки мкс.
- •29. Разработка и автономная отладка аппаратных и программных средств микроконтроллерных систем.
- •30. Методы и средства совместной отладки аппаратных и программных средств микроконтроллерных систем.
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. Функции приведены в табл. 1. Полное описание этих функций дано в заголовочном файле с именем adc.h.
Таблица 1
Функции компилятора С18 для АЦП
Функция |
Описание |
OpenADC( ) |
Конфигурирует АЦП |
SetChanADC( ) |
Выбирает канал, который будет использоваться |
ConvertADC( ) |
Запускает АЦП |
BusyADC( ) |
Проверяет, занят ли сейчас АЦП |
ReadADC( ) |
Считывает результат преобразования АЦП |
CloseADC( ) |
Отключает АЦП |
Пример записи функции OpenADC( ), которая будет использована в данной лабораторной работе:
OpenADC(ADC_FOSC_4 & ADC_RIGHT_JUST & ADC_1ANA_ 0REF,
ADC_CH0 & ADC_INT_OFF);
Эта функция задает тактирование АЦП от генератора МК, коэффициент деления частоты FOSC равен 4; правое выравнивание результата АЦ-преобразования; один аналоговый вход AN0, опорные напряжения UREF+ = UDD, UREF- = USS ; выбирается канал 0 (вход AN0); запрещаются прерывания от АЦП.
Следующая функция SetChanADC( ) выбирает канал, который будет использовать АЦП. Прототип функции:
void SetChanADC(unsigned char channel);
Аргумент функции: channel
ADC_CH0 Канал 0
ADC_CH1 Канал 1
ADC_CH2 Канал 2
…………….
Пример записи функции, который будет использоваться в лабораторной работе:
SetChanADC(ADC_CH0);
Выбирается канал 0, т.е. аналоговый сигнал должен подаваться на линию AN0 (вывод RA0 порта А).
Функция ConvertADC( ) осуществляет запуск (старт) АЦ-преобразования. Прототип функции:
void ConvertADC(void);
Функция BusyADC( ) – АЦП в данный момент выполняет преобразование? (по-другому, АЦП занят?). Прототип функции:
char BusyADC(void);
Эта функция возвращает значение 1, если АЦП выполняет преобразование (АЦП занят), и возвращает значение 0, если АЦП не выполняет преобразование (АЦП свободен).
Функция ReadADC( ) – чтение результата АЦ-преобразования. Прототип функции:
int ReadADC(void);
Эта функция возвращает двухбайтное число, в котором размещается 10-разрядный код АЦП. Он размещается в младших или старших разрядах числа в соответствие с параметром, заданным в функции OpenADC( ).
Функция CloseADC( ) – отключение АЦП. Прототип функции:
void CloseADC(void);
Эта функция отключает модуль АЦП, при этом он не потребляет ток от источника питания.
Для осуществления АЦ-преобразования входного сигнала программа МК должна сделать следующие действия:
выполнить конфигурацию АЦП с помощью задания соответствующих аргументов в функции OpenADC( );
выбрать канал для ввода аналогового сигнала с помощью функции SetChanADC( );
выполнить задержку на время 20 мкс для заряда конденсатора схемы выборки-хранения;
запустить преобразование с помощью функции ConvertADC( );
производить периодический опрос готовности данных АЦП с помощью функции BusyADC( ) (если не используется прерывание от АЦП);
в случае готовности данных считать результат АЦ-преобразования с помощью функции ReadADC( ).