-установить в лог. 1 разряд ADIE для разрешения режима прерывания;
-установить в лог. 1 разряд ADEN, чтобы разрешить использование АЦП;
-установить в лог. 1 разряд ADSC, чтобы начать преобразование;
-результат преобразования сохраняется в регистровой паре ADCL, ADCH;
В микроконтроллерах PIC для управления работой встроенного АЦП также используются два регистра: ADCON0 (рис. 8.2) и ADCON1 (рис. 8.3).
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ADCS1 | ADCS0 | CHS2 | CHS1 | CHS0 | GO/DONE | ADIF | ADON |
Рис. 8.2. Регистр ADCON0 микроконтроллеров PIC
Назначение разрядов регистра ADCON0:
-ADON – флаг разрешения использования АЦП;
-ADIF – разряд запроса на прерывание по окончанию преобразования;
-GO/DONE – установка этого разряда в лог. 1 активизирует АЦП; по окончанию преобразования автоматически сбрасывается в лог. 0;
-CHS0-CHS2 – выбор аналогового входа порта А (назначение этих разрядов зависит от типа микроконтроллера);
-ADCS0-ADCS1 – выбор рабочей частоты АЦП (табл. 1.24).
Таблица 8.2. Выбор рабочей частоты АЦП микроконтроллеров PIC
ADCS1 | ADCS0 | Частота |
0 | 0 | Частота системной синхронизации / 2 |
0 | 1 | Частота системной синхронизации / 8 |
1 | 0 | Частота системной синхронизации / 32 |
1 | 1 | Тактирование от встроенного RC-осциллятора АЦП (250 кГц) |
Максимальная допустимая рабочая частота АЦП микроконтроллеров PIC – 625 кГц. Это следует учитывать при выборе коэффициента деления частоты системной синхронизации.
Использование внутреннего RC-осциллятора АЦП не рекомендуется для микроконтроллеров с частотой системной синхронизации выше 1 МГц.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ADFM | – | – | – | PCFG3 | PCFG2 | PCFG1 | PCFG0 |
Рис. 8.3. Регистр ADC0N1 микроконтроллеров PIC
Назначение разрядов регистра ADCON1;
-PCFG0-PCFG3 – разряды конфигурации – определяют, какие выводы порта АЦП являются аналоговыми входами, а какие используются для подачи опорных напряжений Vref+ и Vref–; наиболее распространенная конфигурация: 0000, которая определяет все 8 выводов аналоговыми входами, а в качестве опорных напряжений – напряжения VDD и Vss; другие значения разрядов PCFG0-PCFG3 варьируются в зависимости от типа микроконтроллера;
-ADFM – выбор разрешения преобразования: 1 – 10 бит; 0 – 8 бит.
Результат преобразования сохраняется в регистровой паре ADRESL, ADRESH, причем в регистре ADRESH используются только младшие два разряда в случае преобразования с разрешением 10 бит.
Таким образом, в общем случае процесс аналого-цифрового преобразования в микроконтроллерах PIC протекает следующим образом:
-определить с помощью разрядов регистра ADCON1 конфигурацию преобразования;
-установить разряды 6-7 регистра ADCON0 для выбора рабочей частоты АЦП;
-установить разряды 3-5 регистра ADCON0 для выбора аналогового канала;
-установить в лог. 1 разряды ADON и GO регистра ADCON0, чтобы начать преобразование;
-дождаться окончания преобразования (лог. 0 в разряде DONE регистра ADCON0) и считать результат из регистровой пары ADRESLL, ADRESH.
В ряде моделей микроконтроллеров AVR и PIC используется встроенный аналоговый компаратор напряжения, сравнивающий входное напряжение на двух входах. Как только напряжение на неинвентирующем входе станет больше, чем на инвентирующем, на выходе компаратора устанавливается лог. 1. Часто аналоговый компаратор используют для сравнения некоторого входного напряжения с опорным (рис. 8.4).
Для активизации компаратора требуется предварительно перевести соответствующие выводы микроконтроллера в режим входов. Время срабатывания компараторов небольшое, поэтому с их помощью можно быстро формировать ответные реакции на изменение соотношений входных напряжений.
В микроконтроллерах AVR входам компаратора AIN0 и AIN1 обычно соответствуют разряды 0/1 или 2/3 порта В. В микроконтроллерах PIC конфигурация входов компаратора (вывода порта А) настраивается с помощью разрядов регистра CMCON, о чем речь пойдет чуть позже.
В микроконтроллерах AVR для управления работой аналогового компаратора используется регистр ACSR (рис. 8.5), расположенный в области ввода/вывода по адресу 0x08 (адрес 0x28 в SRAM).
Рис. 8.4. Принцип работы аналогового компаратора напряжений
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ACD | – | ACO | ACI | ACIE | ACIC | ACIS1 | ACIS0 |
Рис. 8.5. Регистр ACSR микроконтроллеров AVR
Назначение разрядов регистра ACSR:
-ACD – если установлен в лог. 1, то питание аналогового компаратора отключено;
-АСО – напрямую связан с выходом аналогового компаратора;
-ACI – флаг прерываний от аналогового компаратора – устанавливается в лог. 1, когда наступает событие, определенное разрядами ACIS1 и ACIS0;
-ACIE – разряд разрешения прерывания от аналогового компаратора;
-ACIC – разряд разрешения захвата на входе аналогового компаратора; для того чтобы можно было вызвать прерывание по захвату, оно должно быть разрешено разрядом TICIE1 в регистре TIMSK;
-ACIS1, ACIS0 – устанавливают вид события на выходе аналогового компаратора, которое должно вызвать прерывание его работы (табл. 8.3).
Таблица 8.3. Вид событий для вызова прерывания от аналогового компаратора
ACIS1 | AC1S0 | Вид прерывания аналогового компаратора |
0 | 0 | Прерывание при изменении состояния выхода (разряда АСО) |
0 | 1 | Не используется |
1 | 0 | Прерывание по ниспадающему фронту на выходе аналогового компаратора (напряжение на AIN1 больше, чем на AIN0) |
1 | 1 | Прерывание по нарастающему фронту на выходе аналогового компаратора (напряжение на AIN0 больше, чем на AIN1) |
В микроконтроллерах PIC могут использоваться два аналоговых компаратора – в частности, в серии Р1С16С62х. В этом случае для управления их работой предназначен регистр CMCON (рис. 8.6).
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
C2OUT | C1OUT | – | – | CIS | CM2 | CM1 | CM0 |
Рис. 8.6. Регистр CMCON микроконтроллеров серии Р1С16С62х
-СМ0-СМ2 – выбор режима работы компаратора (табл. 1.26);
-CIS – разряд управления входным коммутатором компаратора (табл. 8.4);
-C10UT – выходной сигнал компаратора 1;
-C20UT – выходной сигнал компаратора 2.
Таблица 8.4. Конфигурация входов компараторов напряжения в серии Р1С16С62х
CIS | СМ2 | СМ1 | CM0 | Компаратор 1 | Компаратор 2 | ||
Вход + | Вход– | Вход + | Вход– | ||||
X | 0 | 0 | 0 | RA0 | RA3 | RA2 | RA1 |
0 | 0 | 0 | 1 | RA2 | RA0 | RA2 | RA1 |
1 | 0 | 0 | 1 | RA2 | RA3 | RA2 | RA1 |
0 | 0 | 1 | 0 | Vref | RA0 | Vref | RA1 |
1 | 0 | 1 | 0 | Vref | RA3 | Vref | RA2 |
X | 0 | 1 | 1 | RA2 | RA0 | RA2 | RA1 |
X | 1 | 0 | 0 | RA3 | RA0 | RA2 | RA1 |
X | 1 | 0 | 1 | - | – | RA2 | RA1 |
X | 1 | 1 | 0 | RA2 | RA0 | RA2 | RA1 |
X | 1 | 1 | 1 | - | - | - | - |
В общей сложности микроконтроллеры семейства Mega поддерживают следующие режимы программирования:
-режим последовательного программирования (по интерфейсу SPI);
-режим параллельного программирования при высоком напряжении;
-режим программирования через интерфейс JTAG.
Под “высоким” напряжением здесь понимается управляющее напряжение (12 В), подаваемое на вывод RESET микроконтроллера для перевода последнего в режим программирования.
Режимы программирования для конкретного микроконтроллера представлены в табл. 9.1.
Таблица 14.1. Режимы программирования микроконтроллеров семейства Mega
Режим программирования | ATmega 8515x/8535x | ATmega 8x | ATmega 16x/32x | ATmega 64x/128x | ATmega 48x/88x/168x | ATmega 162x | ATmega 164x/324x ATmega 644x | ATmega 165x | ATmega 325x/3250x, ATmega 645x/6450x | ATmega 640x,ATmega 1280x/1281x,ATmega 2560x2561x |
1.Последовательное, по интерфейсу SPI | + | + | + | + | + | + | + | + | + | + |
2. Параллельное, при высоком напряжении | + | + | + | + | + | + | + | + | + | + |
3. По интерфейсу JTAG | + | + | + | + | + | + | + |
Кроме того, микроконтроллеры семейства Mega имеют возможность самопрограммирования. Под этим термином понимается изменение содержимого памяти программ, управляемое самим микроконтроллером.
В процессе программирования могут выполняться следующие операции:
-стирание кристалла (chip erase);
-чтение/запись FLASH-памяти программ;
-чтение/запись EEPROM-памяти данных;
-чтение/запись конфигурационных ячеек;
-чтение/запись ячеек защиты;
-чтение ячеек идентификатора;
-чтение калибровочного байта.
Все модели микроконтроллеров поставляются со стертой памятью программ и памятью данных (во всех ячейках находится число $FF) и пригодны к немедленному программированию.
Содержимое FLASH-памяти программ, а также содержимое EEPROM-памяти данных может быть защищено от записи и/или чтения посредством программирования ячеек защиты (Lock Bits) LB1 и LB2. Возможные режимы защиты, соответствующие различным состояниям этих ячеек, приведены в табл. 8.2.
Таблица 8.2. Режимы защиты
№ режима | Ячейки защиты | Описание | |
LB1 | LB2 | ||
1 | 1 | 1 | Защита кода и данных отключена |
2 | 0 | 1 | Запись FLASH и EEPROM запрещена |
3 | 0 | 0 | Запрещены запись и чтение FLASH и EEPROM |
В режимах 2 и 3 запрещается также изменение конфигурационных ячеек. Поэтому включение защиты следует выполнять в самую последнюю очередь, после программирования остальных областей памяти микроконтроллера.