Шрифт:
Обслуживание модуля ATD — альтернативная функция линий порта AD. Линии порта AD могут использоваться не только в качестве аналоговых входов модуля ATD, но и как линии порта ввода общего назначения. Каждый порт МК обладает регистром данных. Для порта AD 8-разрядный регистр данных PORTAD располагается в памяти по адресу $006F, формат этого регистра приведен на рис. 4.91. При выполнении операции чтения регистра данных порта логические сигналы на линиях AN7/PAD7…AN0/PAD0 отображаются в соответствующих разрядах регистра PORTAD.
Рис. 4.91. Формат регистра данных порта PORTAD
После завершения каждого преобразования в составе измерительной последовательности результат преобразования помещается в один из восьми регистров результата 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/256xUREF
1. Код измеренного напряжения на выходе 8-разрядного АЦП равен 10001010b. Потенциалы на входах опорных напряжений АЦП составляют URH=5,0 В и URL=0 В. Каково значение измеренного напряжения в Вольтах?
Ответ: Десятичный эквивалент двоичного кода 10001010b равен 138. Поэтому измеренное напряжение равно:
UIZM = KIZM/256xUREF = (138/256) (5,0 – 0) = 2,69 В
Двухбайтовый регистр 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 В = USS<=UIZM<=UDD=5,0 В;
• Осуществить внутреннюю коммутацию напряжения питания к модулю ATD. Для этого записать 1 в бит ADPU регистра управления ATDCTL2. Адрес регистра — $0062;
• Выдержать паузу в 100 мкс для завершения переходных процессов в модуле ATD. В рассматриваемом ниже программном фрагменте мы покажем, как организовать такую задержку;
• Назначить режим работы модуля ATD посредством записи необходимых слов инициализации в управляющие регистры модуля;
• Запустить измерительную последовательность посредством записи в регистр управления ATDCTL5;
• Контролировать ход преобразования, используя флаги регистра состояния модуля ATDSTAT;
• Когда измерительная последовательность будет завершена, считать данные из регистров результата ADR0H…ADR7H в память МК;
• Если экономия энергии важна для Вашего применения, следует выключить модуль ATD, установив бит ADPU регистра ATDCTL2 в 0.