Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт

Читать онлайн Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 70 71 72 73 74 75 76 77 78 ... 150
Перейти на страницу:

/*-----------------------------------------------------------------------*/

void delay_100us(void) {

 int i;

 for (i=0; i<50; i++) {

  asm("nop");

 }

}

/*------------------------------------------------------------------*/

/* Функция delay_5ms формирует задержку в 5мс, частота тактирования */

/* межмодульных магистралей МК составляет 8 МГц                     */

/*------------------------------------------------------------------*/

void delay_5ms(void) {

 int i;

 for (i=0; i<50; i++) {

  delay_100us();

 }

}

/*------------------------------------------------------------------*/

4.22.4. Обслуживание прерываний от модуля ATD

В рассмотренном примере использовался метод программного опроса триггера завершения измерительной последовательности SCF в регистре состояния ATDSTAT. В этом же регистре располагаются флаги CCF7…CCF0, которые устанавливаются автоматически, когда в процессе выполнения измерительной последовательности произошла запись в одноименный регистр результата. Флаги CCF7…CCF0 могут быть программно опрошены с целью выяснения, завершилось или нет определенное аналого-цифровое преобразование в составе измерительной последовательности. В относительно медленных приложениях такая необходимость отсутствует, поскольку малое быстродействие объекта управления позволяет прикладной программе дождаться окончания всей измерительной последовательности, и лишь затем начать выборку из регистров модуля ATD кодов результатов для проведения дальнейших расчетов.

Если же прикладная программа обслуживает достаточно динамичный объект, то может возникнуть необходимость выборки из регистров результата данных в процессе исполнения измерительной последовательности. Именно тогда и следует воспользоваться флагами завершения преобразования в отдельных каналах CCF7…CCF0. Прикладная программа должна запустить измерительную последовательность на исполнение, а затем контролировать состояние флага первого преобразуемого канала. Когда флаг установится, соответствующий регистр результата может быть считан. При этом во время выборки из памяти первого результата, будет продолжаться аналого-цифровое преобразование следующего сигнала. И так до завершения всей измерительной последовательности.

Программный опрос или поллинг (в англоязычной терминологии) — не единственный способ взаимодействия прикладной программы с модулем аналого-цифрового преобразования. Модуль ATD способен генерировать запросы на прерывание по завершению исполнения измерительной последовательности. Прерывания разрешаются посредством установки бита ASCIE регистра ATDCTL2 в 1. При этом запрос на прерывание генерируется, если устанавливается бит ASCIF в том же регистре. Этот же бит следует сбросить в подпрограмме прерывания, чтобы по завершению следующей измерительной последовательности был сгенерирован новый запрос. Обратите внимание на некоторую особенность битов состояния модуля ATD. Существует два бита завершения исполнения измерительной последовательности: бит ASCIF в регистре управления ATDCTL2 и бит SCF в регистре состояния ATDSTAT. При этом первый бит используется в прерываниях, а второй при программном опросе.

4.23. Особенности модуля ATD в составе МК семейства HCS12

Модуль ATD в составе МК семейства HCS12 по своей архитектуре и исполняемым функциям крайне близок к рассмотренному модулю аналого-цифрового преобразования микроконтроллеров семейства 68HC12. Однако он имеет ряд отличий, которые позволили улучшить его функциональные характеристики:

• Программируемая разрядность аналого-цифрового преобразования: 8 или 10 бит;

• Несколько способов представления результата преобразования: в формате со знаком и без знака, со сдвигом кода 10-разрядного кода в старшие или младшие разряды 16-разрядного регистра результата;

• Возможность запуска измерительной последовательности от внешнего сигнала;

• Программируемое от 1 до 8 число преобразований в одной измерительной последовательности;

• В некоторых моделях МК число аналоговых входов увеличено до 16.

Далее мы кратко остановимся на каждом из этих дополнительных свойств модуля ATD в составе МК HCS12.

4.23.1. Выбор разрядности АЦП

Бит SRES8 в регистре управления ATDCTL4 (рис. 4.93) определяет число разрядов кода аналого-цифрового преобразования, которое выполняет встроенный АЦП модуля ATD. Использование 10-разрядного кода в представлении результата позволяет повысить разрешающую способность АЦП с 19,53 мВ до 4,88 мВ.

Рис. 4.93. Формат регистров модуля ATD в составе HCS12

4.23.2. Представление результата измерения

Результат аналого-цифрового преобразования модуля ATD может быть представлен в формате без знака или со знаком. Бит DSGN регистра ATDCTL5 (рис. 4.93) осуществляет выбор между представлением без знака (при DSGN = 0) или со знаком (при DSGN = 1). Код результата может размещаться со сдвигом влево, т.е. в старшие разряды 16-разрядного регистра результата (бит DJM = 0), или со сдвигом вправо, т.е. в младшие разряды регистра результата (бит DJM = 1).

4.23.3. Запуск измерительной последовательности от внешнего сигнала

Аппаратные средства модуля аналого-цифрового преобразования в составе МК HCS12 позволяют производить запуск измерительной последовательности по изменению внешнего сигнала, который подключается на вход AN7/ETRIG/PAD7 модуля. Такой режим чрезвычайно полезен для синхронизации проводимых измерений с режимами работы объекта управления. Режим внешнего запуска разрешается установкой бита ETRIGE регистра ATDCTL2 в 1. При ETRIGE = 0 реализуется обычный программный режим запуска.

Параметры внешнего сигнала запуска настраиваются посредством задания кодовой комбинации двух битов управления в регистре ATDCTL2. Бит ETRIGLE назначает запуск по уровню или по перепаду внешнего сигнала, бит ETRIGP определяет активный уровень сигнала запуска (логический 0 или 1). Формат обновленного регистра управления ATDCTL2 с перечисленными битами представлен на рис. 4.93. При ETRIGLE:ETRIGP = 00 реализуется запуск измерительной последовательности по спадающему фронту внешнего сигнала, при ETRIGLE:ETRIGP = 01 — по нарастающему фронту, при ETRIGLE:ETRIGP = 10 запуск осуществляется при низком логическом уровне внешнего сигнала, при ETRIGLE:ETRIGP = 11 — при высоком уровне сигнала.

4.23.4. Программируемое число преобразований в измерительной последовательности

Рассмотренный ранее модуль ATD в составе МК 68HC12 мог исполнять измерительные последовательности, состоящие из 4 или из 8 преобразований. В МК HCS12 число измерений в последовательности может быть любым в диапазоне от 1 до 8. Если бит MULT регистра управления ATDCTL5 установлен в 0, то все измерения в последовательности выполняются для одного канала. При этом номер канала определяют биты CC:CB:CA регистра ATDCTL5, а число измерений в последовательности – биты S8C:S4C:S2C:S1C. Например, если MULT = 0, CC:CB:CA = 010b, а S8C:S4C:S2C:S1C = 0101b, то измерительная последовательность будет состоять из 5 преобразований сигнала канала 2. Обратите внимание, что формат регистра ATDCTL5 в модуле аналого-цифрового преобразования HCS12 изменен (рис. 4.93).

Если бит MULT установлен в 1, то в измерительной последовательности будет производиться оцифровка сигналов разных каналов. При этом биты CC:CB:CA будут определять номер первого канала в последовательности, а биты S8C:S4C:S2C:S1C — число измерений в последовательности. Например, MULT = 1, CC:CB:CA = 010 b, а S8C:S4C:S2C:S1C = 011 b. Измерительная последовательность будет состоять из трех преобразований, последовательно будут измерены напряжения в каналах 2, 3, 4.

Дополнительные возможности по выборке данных из регистров результата модуля ADT HCS12 предоставляет режим FIFO (First In First Out — первым пришел, первым вышел). Если бит FIFO в регистре ATDCTL3 равен 0, то реализуется ранее рассмотренный порядок записи кодов преобразования в регистры результатов. При FIFO = 1 регистры результата образуют накопительный банк, который хранит 8 последних измерений. При каждом следующем преобразовании, результат преобразования записывается в банк, при этом первое из 8 хранящихся в банке измерений теряется.

4.23.5. Увеличение числа аналоговых входов

Увеличение числа аналоговых входов для подключения измеряемых сигналов в МК семейства HCS12 ведется не путем изменения структуры модуля ATD, который имеет 8 аналоговых входов, а путем увеличения числа модулей аналого-цифрового преобразования в составе отдельных моделей МК. Так МК MC9S12DP256B имеет в своем составе два модуля аналого-цифрового преобразования (ATD0 и ATD1).

4.23.6. Регистры модуля ATD HCS12

На рис. 4.93 приведены форматы новых, дополнительных по сравнению с ранее рассмотренной версией модуля ATD регистров специальных функций ATDSTAT0, ATDSTAT1, ATDDIEN, а также тех регистров, которые, сохранив прежнее имя, претерпели изменение формата.

1 ... 70 71 72 73 74 75 76 77 78 ... 150
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт.
Комментарии