Тема 11. Аналого-цифровые и цифро-аналоговые преобразователи

Отличительная особенность многих современных 8-разрядных МК – интегрированный на кристалл МК модуль многоканального аналого-цифрового преобразователя (АЦП). Модуль АЦП предназначен для ввода в МК аналоговых сигналов с датчиков физических величин и преобразования этих сигналов в двоичный код с целью последующей программной обработки. Структурная схема типового модуля АЦП представлена на рисунке. Многоканальный аналоговый коммутатор служит для подключения одного из источников аналоговых сигналов (РТх0...РТх7) ко входу АЦП. Выбор источника сигнала для измерения осуществляется посредством записи номера канала коммутатора в соответствующие разряды регистра управления АЦП. Заметим, что в модулях АЦП 8-разрядных МК предусмотрена только программная установка номера канала, режим автоматического последовательного сканирования каналов с записью результата измерения каждого канала в индивидуальную ячейку памяти не реализуется.

 

Диапазон измеряемых значений напряжения аналоговых входов определяется опорным напряжением UОП. Разрешающая способность АЦП составляет UОП/2n, где n – число двоичных разрядов в слове результата. Максимальное значение опорного напряжения, как правило, равно напряжению питания МК. Два вывода модуля АЦП используются для задания опорного напряжения: VREFH – верхний предел UОП, VREFL – нижний предел. Разность потенциалов на входах VREFH и VREFL и составляет UОП. Если измеряемое напряжение UИЗМ ≥ VREFH, то результат преобразования будет равен $FF, код $00 соответствует напряжениям UИЗМ ≤ VREFL. Для достижения максимальной точности измерения следует выбрать максимально допустимое значение UОП. В этом случае напряжение смещения нуля входного буфера и нелинейность передаточной характеристики АЦП будут вносить относительно малые погрешности.

 

Тема 12 .Разработка и отладка программ в симуляторе ADSIM812

 

Разработка программного обеспечения включает следующие этапы:

1.Подготовка программы на алгоритмическом языке с использованием текстового редактора.

2.Трансляция программы в объектный ( двоичный) код.

3.Отладка программы с помощью программного отладчика (симулятора), в качестве которого используется симулятор ADSIM812, рассмотренный

далее.

4.Загрузка объектного кода в память микроконтроллера.

5.Проверка правильности работы программы при выполнении ее в контроллере.

Симулятор ADSim812

 

ADSim812 поставляется фирмой Analog Devices, чтобы помочь в оценке, разработке и отладке кода для микроконтроллера AduC812. В то время как не возможно полностью смоделировать AduC812 платформу ,этот симулятор подходит так близко как приемлемо возможно к моделированию платформы и сможет сделать работу по оценке и разработке программ для AduC812 намного проще.

Рассмотрим состав , основы организации и функционирования основных модулей микроконтроллера , используемых в курсовой работе. Для разработки программного обеспечения контроллера пользователь симулятора должен выбрать набор модулей , необходимых для выполнения заданных функций и их отладки. Модули выбираются из меню симулятора View.

Основным модулем любого контроллера является центральное процессорное устройство (ЦПУ), обеспечивающее выполнение логических и арифметических операций и обозначенное в симуляторе как SFR Window (рис.10) .

 

 

Рис. Модули ЦПУ и портов симулятора

 

ЦПУ представлен множеством регистров R0…R7, программно доступных пользователю посредством системы команд. В любой из регистров ЦПУ можно записать или изменить значение операнда на любой стадии отладки программы . Для этого необходимо подвести курсор мыши к регистру , кликнуть левой клавишей и затем записать требуемое значение.

Основной рабочий регистр ЦПУ – аккумулятор Acc ,используемый всегда для хранения результата операции и одного из операндов при выполнении операций , а также для обмена информацией с периферийными устройствами, подключаемыми к контроллеру через порты P0…P3 .

Регистр B используется в основном при выполнении операций умножения , деления и некоторых других действий.

PSWрегистр признаков результата операции ,хранит флажки (Flags) – признаки результата операции, используемые для выполнения разветвлений в программе командами условных переходов. Наиболее активно используемым флажком в курсовой работе является флажок переноса(CY) из старшего разряда аккумулятора.

SP – указатель стековой памяти, в котором хранится адрес верхней ячейки стека. Отличием стековой памяти от памяти с произвольным доступом к ячейкам памяти является то, что в стеке используется следующий принцип доступа: данное , записанное в стек первым , можно прочитать только последним, а указатель стека SP ,выполняющий функцию регистра адреса стека , изменяется автоматически при обращении к стеку для формирования адреса следующей ячейки памяти. Подобный механизм доступа к стеку называют сокращенно LIFO (Last Input First Output – «последним записан первым прочитан»).

Регистр PC используется для хранения адреса выполняемой команды программы, после выполнения которой в PC будет сформирован адрес следующей команды.

Регистры IP иIE используются при обработке запросов прерывания и позволяют задать приоритеты каждому из прерываний и разрешить их обработку в ЦПУ соответственно.

Остальные регистры ЦПУ в данной работе не используются и поэтому здесь не обсуждаются.

Для подключения к контроллеру датчиков и устройств ввода и вывода данных в модели имеются порты ввода (Input Ports) и порты вывода (Output Ports). При отладке программы в порты ввода можно загрузить входные данные и стартовать выполнение программы. Выходные сигналы , поступающие в порты вывода, к которым подключены ИМ, формируются моделируемой программой. Основной набор периферийных устройств контроллера можно классифицировать следующим образом:

ПУ для связи с пользователем: клавиатура, индикаторы, принтеры, кнопки сброса контроллера и т.п.

Для хранения основного набора данных в контроллере имеется резидентная память данных (РПД) , модель которой приведена на Рис.

В меню View РПД обозначена как IRAM (Internal RAM). В любой из адресов РПД также ,как и в регистр, можно записать 8-битные исходные данные. Дело в том , что в симуляторе нельзя моделировать входные данные, поэтому они предварительно должны быть записаны или в ячейки памяти РПД , или в порт ввода , к которому в реальной системе подключены датчики цифровых и аналоговых сигналов, а также другие устройства ввода. Таким образом разработчик программ сам определяет набор исходных данных, имитируя ,тем самым , работу датчиков.

Адреса ячеек РПД начинаются с кода 00, в первой строке представлено 16 ячеек памяти (00H –0FH), в следующей строке – следующие 16 ячеек(10H-1FH) и т.д. Следует заметить, что в симуляторе все данные и адреса представлены в 16-ричной системе счисления (H –Hexidecimal).

Команды программы хранятся в резидентной памяти программ РПП, обозначенной в симуляторе Code Memory (Рис. 12), являющейся постоянной памятью. Каждая команда в РПП хранится в следующем формате:

Адрес РПД(Address):Метка (Label):Код Операции(Op Codes):Инструкция(Instruction).

Следует отметить, что команда может занимать в РПП от одного до трех байтов, что необходимо учитывать при оценке длины программы. Отлаживаемую в симуляторе программу можно выполнять в следующих режимах:

автоматический режим выполнения программы полностью;

выполнение программы отдельными фрагментами до точки останова (Breakpoint), количество точек останова неограниченно. Для определения точки останова необходимо выделить требуемый адрес команды и кликнуть мышью на кнопке (Toggle Breakpoint). При этом адрес команды останова будет помещен в квадратные скобки;

 

 

Рис. Модель резидентной памяти данных РПД.

 

Время выполнения моделируемой программы определяется симулятором автоматически. Для оценки времени необходимо вызвать из меню View программу анализа (Program Analysis) и снять показание.

 

 

Рис. Модуль резидентной памяти программ контроллера РПД.