47600 (597343), страница 11
Текст из файла (страница 11)
В микроконтроллерах 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 | - | - | - | - |
-
4. Программирование микроконтроллеров AVR семейства Mega
-
-
Общие сведения
В общей сложности микроконтроллеры семейства 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 запрещается также изменение конфигурационных ячеек. Поэтому включение защиты следует выполнять в самую последнюю очередь, после программирования остальных областей памяти микроконтроллера.
Во всех микроконтроллерах семейства, кроме ATmega48x, имеется четыре дополнительные ячейки защиты — BLB02, BLB01, BLB12 и BLB11. Ячейки BLB02:BLB01 определяют уровень доступа из секции загрузчика к коду, расположенному в секции прикладной программы, а ячейки BLB12:BLB11, наоборот, определяют уровень доступа из секции прикладной программы к коду, расположенному в секции загрузчика. Отсутствие указанных ячеек в модели ATmega48x обусловлено отсутствием у последней выделенной секции загрузчика. Возможные режимы защиты, соответствующие различным состояниям этих ячеек, приведены в табл. 9.3 и табл. 9.4 соответственно.
Таблица 9.3. Режимы защиты секции прикладной программы
№ режима | Ячейки защиты | Описание | |
BLB02 | BLB01 | ||
1 | 1 | 1 | Нет никаких ограничений по доступу к коду, расположенному в секции прикладной программы |
2 | 1 | 0 | Команда SPM не может осуществлять запись по адресам, находящимся в пределах секции прикладной программы |
3 | 0 | 0 | Команда SPM не может осуществлять запись по адресам, находящимся в пределах секции прикладной программы, и команда LPM (ELPM), вызываемая из секции загрузчика, не может осуществлять чтение из секции прикладной программы. Если таблица векторов прерываний расположена в секции загрузчика, то при выполнении кода из секции прикладной программы прерывания запрещены |
4 | 0 | 1 | Команда lpm (elpm), вызываемая из секции загрузчика, не может осуществлять чтение из секции прикладной программы. Если таблица векторов прерываний расположена в секции загрузчика, то при выполнении кода из секции прикладной программы прерывания запрещены |
Таблица 9.4. Режимы защиты секции загрузчика
№ режима | Ячейки защиты | Описание | ||
BLB12 | BLB11 | |||
1 | 1 | 1 | Нет никаких ограничений по доступу к коду, расположенному в секции загрузчика | |
2 | 1 | 0 | Команда SPM не может осуществлять запись по адресам, находящимся в пределах секции загрузчика | |
3 | 0 | 0 | Команда SPM не может осуществлять запись по адресам, находящимся в пределах секции загрузчика, и команда LPM (ELPM), вызываемая из секции прикладной программы, не может осуществлять чтение из секции загрузчика. Если таблица векторов прерываний расположена в секции прикладной программы, то при выполнении кода из секции загрузчика прерывания запрещены | |
4 | 0 | 1 | Команда lpm (elpm), вызываемая из секции прикладной программы, не может осуществлять чтение из секции загрузчика. Если таблица векторов прерываний расположена в секции прикладной программы, то при выполнении кода из секции загрузчика прерывания запрещены |
Все перечисленные ячейки защиты сгруппированы в одном байте. Расположение ячеек защиты в нем для разных моделей приведено на Рис. 14.1.