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

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

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

Рис. 4.89. Выбор номера канала для оцифровки

Анализируя таблицу рис. 4.89, обратите внимание, что выделенные цветом разряды не оказывают влияния на номер выбранного канала, если бит MULT установлен в 1. Таким образом, при MULT = 1 измерения проводятся для последовательности из четырех каналов, если S8CM = 0. Номера каналов определяются комбинацией битов CD:CC. Если S8CM = 1, то при MULT = 1 измерения проводятся для последовательности из восьми каналов. Номера каналов определяются значением бита CD.

Если бит MULT установлен в 0, то все CD…CA определяют номер канала, для которого будут произведены четыре (при S8CM = 0) или восемь (при S8CM = 1) последовательных преобразований.

Также обратите внимание, что при S8CM:CD = 01/10b ко входу АЦП подключаются сигналы линий VHL и VRL, что позволяет измерить текущее значение опорного напряжения и тем самым повысить точность аналого-цифрового преобразования.

Перед рассмотрением следующих групп регистров специальных функций модуля ATD, проверьте степень усвоения материала в процессе ответа на следующие вопросы.

Вопросы для самопроверки

1. Какой код должен быть записан в регистр управления ATDCTL2 для того, чтобы включить модуль ATD и назначить обычный способ сброса флагов событий в модуле?

Ответ: Для включения модуля флаг ADPU должен быть установлен в 1. Этот флаг располагается в разряде 7 регистра. Для назначения обычного способа сброса флагов событий модуля следует установить бит AFFC в 0. Бит AFFC располагается в разряде 6 регистра. Поэтому в регистр управления ATDCTL2, располагающийся по адресу $0062, должен быть записан код 10000000 b или $80.

2. Запишите выражение на Си для выполнения инициализации регистра ATDCTL2 кодом предыдущего вопроса.

Ответ:

ATDCTL2 = 0x80;

3. Какой код должен быть записан в регистр управления ATDCTL5 для того, чтобы назначить для модуля режим многократного преобразования, при этом измерительная последовательность должна производить оцифровку 8 входных сигналов.

Ответ: Для организации заказанного режима следует установить бит S8CM в 1 (бит 6 регистра ATDCTL5), бит SCAN также в 1 (бит 5), бит MULT в 1 (бит 4), бит CD в 0 (бит 3), остальные биты CC, CB и CA значения не имеют.

Обобщая, в регистр управления ATDCTL5, расположенный по адресу $0065, должен быть записан код 01110000 b или $70.

4. Запишите выражение на Си для выполнения инициализации регистра ATDCTL5 кодом предыдущего вопроса.

Ответ:

ATDCTL5 = 0x70;

5. Каковы преимущества использования АЦП в режиме преобразования с 10-разрядным выходным кодом относительно 8-разрядного кода оцифровки?

Ответ: При 10-разрядном выходном коде разрешающая способность АЦП выше. Она составляет 4,88 мВ по сравнению с 19,53 мВ для 8-разрядного кода. Численные значения разрешающей способности приведены для UREF=5,0 В.

Регистр состояния ATDSTAT

Рис. 4.90. Формат регистра состояния ATDSTAT

Регистр состояния ATDSTAT — это двухбайтовый регистр, который располагается в памяти по адресам $0066 и $0067. Регистр содержит в себе группу флагов, которые отражают текущее состояние аналого-цифрового преобразования в модуле ATD. Формат регистра представлен на рис. 4.90.

Флаг SCF (Sequence Complete Flag) автоматически устанавливается в 1, если все преобразования назначенной измерительной последовательности завершены. Если модуль находится в режиме однократного преобразования, то бит SCF установится после завершения исполнения измерительной последовательности из 4 или 8 преобразований. При работе модуля в режиме многократного преобразования, бит SCF установится после завершения первой измерительной последовательности.

Бит AFFC в регистре управления ATDCTL2 определяет способ сброса всех флагов в регистре состояния, в том числе и бита SCF. Если бит AFFC установлен в 0, то бит SCF обнуляется автоматически при выполнении операции записи в регистр управления ATDCTL5 для запуска новой измерительной последовательности. Если же бит AFFC установлен в 1, то бит SCF также сбрасывается автоматически при чтении одного из регистров результата.

Биты CC2…CC1 вместе составляют трехразрядный двоичный счетчик, который показывает номер текущего аналого-цифрового преобразования и, как следствие, номер регистра результата, в который будет занесен код очередного преобразования.

Каждый из восьми флагов завершения преобразования CCF7…CCF0 соответствует одноименному регистру результата ADR7H…ADR0H (бит CCF7 регистру ADR7H, бит CCF6 регистру ADR6H и т.д.). Биты CCF7…CCF0 устанавливаются автоматически, когда в процессе выполнения измерительной последовательности произошла запись в одноименный регистр результата. Если флаг AFFC установлен в 1, то биты CCF7…CCF0 сбрасываются автоматически при чтении одноименного регистра результата. При AFFC = 0 биты CCF7…CCF0 сбрасываются при чтении регистра состояния ATDSTAT, т.е. регистра с этими битами. Биты CCF7…CCF0 предназначаются для программного опроса с целью выяснения, завершилось или нет определенное аналого-цифровое преобразование в составе измерительной последовательности.

Регистр данных порта PORTAD

Обслуживание модуля ATD — альтернативная функция линий порта AD. Линии порта AD могут использоваться не только в качестве аналоговых входов модуля ATD, но и как линии порта ввода общего назначения. Каждый порт МК обладает регистром данных. Для порта AD 8-разрядный регистр данных PORTAD располагается в памяти по адресу $006F, формат этого регистра приведен на рис. 4.91. При выполнении операции чтения регистра данных порта логические сигналы на линиях AN7/PAD7…AN0/PAD0 отображаются в соответствующих разрядах регистра PORTAD.

Рис. 4.91. Формат регистра данных порта PORTAD

Регистры результата ADR0H…ADR7H

После завершения каждого преобразования в составе измерительной последовательности результат преобразования помещается в один из восьми регистров результата ADR0H…ADR7H. Номер регистра определяется режимом работы модуля ATD и разрядами CD…CA регистра управления ATDCTL5 (рис. 4.89). Регистры результата ADR0H…ADR7H восьмиразрядные, в памяти располагаются по адресам $0070…$007E. Формат регистров ADR0H…ADR7H приведен на рис. 4.92.

Рис. 4.92. Формат регистров результата модуля ATD

В регистрах ADR0H…ADR7H результат аналого-цифрового преобразования представляется в прямом коде без знака. Диапазон возможных значений кодов — 0…255. Для представления результата в абсолютных единицах необходимо код результата разделить на число единиц полной шкалы, а затем умножить на напряжение полной шкалы:

UIZM = KIZM/256×UREF

Вопросы для самопроверки

1. Код измеренного напряжения на выходе 8-разрядного АЦП равен 10001010b. Потенциалы на входах опорных напряжений АЦП составляют URH=5,0 В и URL=0 В. Каково значение измеренного напряжения в Вольтах?

Ответ: Десятичный эквивалент двоичного кода 10001010b равен 138. Поэтому измеренное напряжение равно:

UIZM = KIZM/256×UREF = (138/256) (5,0 – 0) = 2,69 В

Тестовый регистр ATDTEST

Двухбайтовый регистр ATDTEST располагается в памяти по адресам $0068 и $0069. Доступ к этому регистру возможен только в специальном режиме работы МК. В обычном пользовательском режиме работы этот регистр для чтения и для записи недоступен.

4.22.3. Пример программирования модуля ATD

Для того чтобы воспользоваться модулем аналого-цифрового преобразования ATD для измерения уровня напряжения на нескольких аналоговых входах МК, необходимо выполнить следующие действия:

• Подключить источники стабилизированного напряжения ко входам опорного напряжения VRF и VRL. Необходимо помнить, что напряжение на входе высокого уровня опорного напряжения VRF не должно превышать 5,0 В, а на входе низкого уровня VRL напряжение должно быть не менее 0 В. Кроме того, разность напряжений на входах VRF и VRL, равная напряжению полной шкалы АЦП UREF = URH–URL, не должна быть менее 2,5 В;

• Подключить источники измеряемых аналоговых сигналов ко входам AN0…AN7. Напряжение измеряемых сигналов должно находиться в диапазоне 0 В = USSUIZMUDD=5,0 В;

• Осуществить внутреннюю коммутацию напряжения питания к модулю ATD. Для этого записать 1 в бит ADPU регистра управления ATDCTL2. Адрес регистра — $0062;

• Выдержать паузу в 100 мкс для завершения переходных процессов в модуле ATD. В рассматриваемом ниже программном фрагменте мы покажем, как организовать такую задержку;

• Назначить режим работы модуля ATD посредством записи необходимых слов инициализации в управляющие регистры модуля;

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