Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
Двухбайтовый регистр ATDTEST располагается в памяти по адресам $0068 и $0069. Доступ к этому регистру возможен только в специальном режиме работы МК. В обычном пользовательском режиме работы этот регистр для чтения и для записи недоступен.
4.22.3. Пример программирования модуля ATD
Для того чтобы воспользоваться модулем аналого-цифрового преобразования ATD для измерения уровня напряжения на нескольких аналоговых входах МК, необходимо выполнить следующие действия:
• Подключить источники стабилизированного напряжения
• Подключить источники измеряемых аналоговых сигналов ко входам AN0…AN7. Напряжение измеряемых сигналов должно находиться в диапазоне 0 В = USS<=UIZM<=UDD=5,0 В;
• Осуществить внутреннюю коммутацию напряжения питания к модулю ATD. Для этого записать 1 в бит ADPU регистра управления ATDCTL2. Адрес регистра — $0062;
• Выдержать паузу в 100 мкс для завершения переходных процессов в модуле ATD. В рассматриваемом ниже программном фрагменте мы покажем, как организовать такую задержку;
• Назначить режим работы модуля ATD посредством записи необходимых слов инициализации в управляющие регистры модуля;
• Запустить измерительную последовательность посредством записи в регистр управления ATDCTL5;
• Контролировать ход преобразования, используя флаги регистра состояния модуля ATDSTAT;
• Когда измерительная последовательность будет завершена, считать данные из регистров результата ADR0H…ADR7H в память МК;
• Если экономия энергии важна для Вашего применения, следует выключить модуль ATD, установив бит ADPU регистра ATDCTL2 в 0.
Мы рассмотрим программную реализацию действий по управлению модулем аналого-цифрового преобразования на примере простейшего цифрового вольтметра.
Программный фрагмент voltmeter.c производит измерение аналогового сигнала на входе AN6. Измерительная последовательность состоит из четырех преобразований. Режим измерения однократный. Результаты четырех последовательных преобразований одного и того же сигнала располагаются в четырех регистрах результата ADR0H…ADR3H. Эти измерения усредняются, что позволяет снизить влияние шумов. Полученный 8-разрядный двоичный код преобразуется к истинному значению измеряемого напряжения, умноженному на 100 d. Умножение на нормирующий коэффициент (100 в десятичной системе счисления) необходимо, чтобы использовать в программе целочисленные форматы представления данных. Полученный результат содержит одну десятичную цифру целой части измеренного напряжения, это единицы