
- •Общая структура и номенклатура микроконтроллеров
- •Микроконтроллер 68hc908gp32
- •3. Процессорный модуль cpu08
- •5. Начальный запуск и обработка прерываний.
- •6. Режимы работы микроконтроллеров
- •7. Организация и программирование памяти
- •8. Конфигурация микроконтроллеров
- •9. Модуль сторожевого таймера cop08
- •10. Параллельные порты ввода-вывода данных.
- •11. Модуль асинхронного последовательного интерфейса sci08
- •12. Модуль синхронного последовательного интерфейса spi08
- •13. Таймерные модули
- •14. Модуль аналого-цифрового преобразователя adc08.
- •15. Модуль обслуживания клавиатуры kbi08
14. Модуль аналого-цифрового преобразователя adc08.
В состав микроконтроллеров MC68HC908GP32 входит модуль 8-разрядного аналого-цифрового преобразователя ADC08, который содержит входной мультиплексер, выбирающий один из 8 входов аналоговых сигналов, АЦП, работающий по принципу последовательного приближения, регистр управления-состояния ADSCR, регистр управления тактированием ADCLK и регистр результата ADR.
Функционирование АЦП определяется содержимым регистр ADSCR, который содержит следующие биты (рис.28,а):
COCO – признак окончания преобразования 1 (доступен только для чтения), принимает значение COCO=1 после выполнения очередного цикла преобразования, если установлено значение бита AIEN=0;
AIEN – разрешает при значении AIEN=1 формирование запроса прерывания после каждого цикла преобразования;
ADCO – определяет режим работы АЦП: однократное преобразование при значении ADCO=0, непрерывная работа преобразователя при ADCO=1;
ADCH4-0 - осуществляют выбор аналогового входа в соответствии с табл.23 или выключение модуля ADC08 при установке значения ADCH4-0 = 11111.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||
COCO |
AIEN |
ADCO |
ADCH4 |
ADCH3 |
ADCH2 |
ADCH1 |
ADCH0 |
а). ADSR (адрес $003C)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||
ADIV2 |
ADIV1 |
ADIV0 |
ADICLK |
0 |
0 |
0 |
0 |
б). ADCLK (адрес $003E)
Рис.28. Формат содержимого регистров ADSCR (а) и ADCLK (б) модуля ADC08
Запуск АЦП производится при выборе необходимого аналогового входа путем записи соответствующего значения битов ADCH4-0 в регистр ADSСR. В процессе работы АЦП принимает потенциал, установленный на выбранном входе ADi, и формирует 8-разрядное число, соответствующее величине этого потенциала, которое записывается в регистр результата ADR (адрес $003D). Считывание результата в регистр A или X для последующей обработки производится командой LDA или LDX.
Поступающий на аналоговый вход потенциал Vвх должен находиться в диапазоне Vr>Vвх>0, где Vrf – величина опорного потенциала, который в микроконтроллерах MC68HC908GP32 равен Vап - напряжению питания АЦП, для подключения которого используются отдельные выводы аналогового питания и “земли”. Между этими выводами обязательно следует включить высокочастотный керамический конденсатор для фильтрации помех. При значении Vrf = Vап = 5 В разрешающая способность АЦП составляет около 20 мВ, а погрешность преобразования 10 мВ.
При установке соответствующих значений битов ADCH4-0 производится измерение потенциала Vrf или потенциала на входе аналоговой «земли» (табл.24). Такое измерение выполняется для контроля значений этих потенциалов.
Таблица 24. Выбор аналоговых входов модуля ADC08
-
ADCH4-0
Аналоговый вход
ADCH4-0
Аналоговый вход
00000
AD0 (PTB0)
00101
AD10 (PTD2/PTD1**)
00001
AD1 (PTB1)
00110
AD11 (PTD3/PTD0**)
00010
AD2 (PTB2)
00111
AD12 (PTD4)
00011
AD3 (PDTB)
01000
AD13 (PTD5)
00100
AD4 (PTB4)
01001
AD14 (PTD6)
00101
AD5 (PTB5)
01010-11100
Не используются
00110
AD6 (PTB6)
11101
Потенциал Vrf
00111
AD7 (PTB7)
11110
Аналоговая «земля»
01000
AD8 (PTD0/PTD3*)
11111
Отключение АЦП
01001
AD9 (PTD1/PTD2*)
В зависимости от значения бита ADCO в регистре ADSCR (рис.28,а), обеспечиваются следующие режимы работы АЦП:
режим однократного преобразования (ADCO=0), при котором АЦП автоматически выключается (в регистре ADSCR устанавливается значение битов ADCH4-0 = 11111) после выполнения очередного преобразования и записи результата в регистр ADR;
режим непрерывного преобразования (ADCO=1), при котором АЦП продолжает многократно выполнять преобразования и выдавать значения потенциала на выбранном аналоговом входе до записи в регистр ADSCR нового содержимого.
При любом режиме работы после выполнения очередного цикла преобразования модуль ADC08 выдает запрос прерывания, если в регистре ADSCR установлено значение бита AIEN=1. При этом производится обращение к вектору, который размещается в таблице векторов прерываний по адресу $FFDE-DF (см. табл.10 в разделе 5).
Если прерывания по запросу АЦП запрещены (бит AIEN=0), то после каждого цикла преобразования в регистре ADSCR устанавливается значение признака COCO=1. В этом случае процессор должен производить программный опрос признака COCO и выполнять считывание результата из регистра ADR, если COCO=1. Сброс COCO в состояние 0 производится автоматически после чтения содержимого регистра ADR или после записи нового значения в регистр ADSCR.
В состав модуля ADC08 входит схема тактирования, работающая под управлением регистра ADCLK, который содержит следующие биты (рис.28,б):
ADICLK – определяет выбор сигналов для тактирования АЦП: тактовые импульсы с частотой Ft при установке значения ADICLK=1 или импульсы с частотой кварцевого резонатора Fq при ADICLK=0;
ADV2-0 – задает коэффициент деления частоты Ka при формировании тактовых сигналов АЦП (табл. 25).
Для получения необходимой точности АЦП должен тактироваться импульсами с частотой Fa = (0,5…1) МГц, причем оптимальным является значение Fa, близкое к 1МГц. Эта частота обеспечивается путем деления тактовой частоты Ft (при значении бита ADICLK=1) или частоты кварцевого резонатора Fq (при значении бита ADICLK=0). Необходимое значение коэффициента деления Ka = Ft/Fa или Fq/Fa задается установкой битов ADV2-0 в регистре ADCLK в соответствии с табл.25. Отметим, что нормальная работа АЦП обеспечивается при значениях частоты Ft или Fq не менее 1 МГц.
Для выполнения одного цикла преобразования требуется 17 тактов, поэтому время преобразования составляет около 17 мкс при значении Fa=1 МГц.
Таблица 25. Коэффициент деления
частоты Ka для модуля ADC08
-
ADIV2-0
Ka
000
1
001
2
010
4
011
8
1xx
16