Смекни!
smekni.com

Разработка программной и аппаратной поддержки к методическим указаниям Программирование микроконтроллеров (стр. 9 из 18)

В МК AT90S8515 к выходу компаратора можно подключить вход захвата таймера. При этом можно зафиксировать момент изменения сигнала на выходе компаратора, если в регистре ACSR бит ACIC установлен в 1. Такая возможность позволяет измерять длительность сигнала, поступающего на компаратор.

Конфигурирование МК

В AVR есть два типа битов, задающих конфигурацию МК. Биты конфигурирования «fuses bits» (плавкие перемычки) используются для выбора режима работы AVR, тогда как биты защиты «lock bits» используются для запрещения доступа к памяти.

. Биты конфигурирования различны для разных типов AVR. В AT90S1200 установка в 1 бита RCEN подключает встроенный RC-генератор, при этом внешние тактовые импульсы игнорируются. Когда бит SPIEN сброшен в 0, разрешается программирование МК по последовательному интерфейсу через порт SPI. Во всех этих моделях биты SPIEN и RCEN по умолчанию сброшены в 0.

МК AT90S8515 имеет биты SPIEN и FSTRT, которые позволяют при использовании внешнего тактового генератора производить быстрое включение МК без обычной задержки в 16мс.

Биты конфигурирования «fuses bits» могут быть установлены или сброшены только при параллельном программировании.

Биты защиты «lock bits» используются для запрещения/разрешения доступа к памяти программ в EEPROM, при этом достигаются свойства приведенные в таблице 2.2.

Таблица 2.2. Режимы защиты и биты блокировки

Биты блокировки

Тип защиты

Режим

LB1

LB2

1

1

1

Защита не установлена

2

0

1

Дальнейшее программирование флэш-памяти запрещено

3

0

0

Как режим 2, но запрещено и чтение

Примечание: биты блокировки стираются только при полном стирании памяти

Память данных EEPROM.

Операции чтения и записи области данных EEPROM довольно просты и надежны. Обращение к EEPROM производится при помощи команд с индексной адресацией, которые используют адрес, хранящийся в регистре EEAR.

Если EEPROM имеет емкость больше 256 байт, как у AT90S8515, то используются два адресных регистра: EEARH для хранения старшей части адреса и EEARL – для хранения младшей части. Эти регистры должны сохранять правильный адрес до тех пор, пока не буде закончена операция чтения или записи.

Запись в память данных EEPROM производится следующим образом:

1. Ожидание сброса в 0 бита EEWE в регистре управления EECR памяти EEPROM;

2. Запись в EEAR нужного адреса;

3. Запись в регистр данных EEDR нужных данных;

4. Установка в 1 бита EEMWE в регистре EECR. (Бит EEMWE не используется в AT90S1200);

5. В течении четырех тактов после установки бита EEMWE установить бит EEWE в 1 для начала записи в EEPROM. Операция записи занимает от 2,5 до 4мс.

Бит EEMWE регистра EECR обеспечивает аппаратную блокировку записи для того, чтобы уменьшить возможность случайного изменения EEPROM.

Чтение из EEPROM выполняется аналогичным образом.

1. Ожидание сброса в 0 бита EEWE в регистре управления EECR;

2. Запись в EEAR нужного адреса;

3. Установка в 1 бита EERE в регистре EECR;

4. Чтение данных из EEDR.

Операция записи должна быть закончена до того, как программа произведет попытку чтения из EEPROM. После установки в 1 бита EERE процессор переходит в состояние ожидания в течении двух тактов, пока данные выбираются из EEPROM. Это означает, что выполнение команды «SBI EECR, EERE», которая инициализирует операцию чтения, занимает не один такт, а три.

Подключение питания и запуск.

Подключение питания к AVR осуществляется очень просто. Для этого требуется напряжение +5В, шина «земля» развязывающий конденсатор. Все модели имеют широкий диапазон напряжений питания 2,7 В – 6,0 В, что позволяет легко реализовать батарейное питание, используя от 2 до 4 обычных батареек или никель-кадмиевых элемента.

Что касается потребления энергии, то МК потребляют несколько мА в рабочем режиме и несколько сотен мкА в режим ожидания (sleep mode).

Вывод RESET имеет внутреннее соединение с шиной питания через резистор («потягивания» к питанию), что избавляет от необходимости использования внешнего соединения. В процессе отладки системы, когда надо постоянно перезапускать МК и наблюдать за его поведением, все, что вам для этого нужно – это простая кнопка, которая будет замыкать вывод RESET на землю (см. рис. 2.10). В законченной системе вы можете оставлять вывод RESET не подключенным.


Рис. 2.10. Запуск AVR при помощи внешнего выключателя.

Если во время выполнения программы на вход RESET поступит сигнал низкого уровня длительность более двух тактов, то выполнение программы сбрасывается в начальное состояние, а тактовый генератор продолжает работать. Когда на этом выводе снова установиться высокий уровень, выполнения программы начнется с нулевого адреса.

Программирование в системе.

Используя программирование по последовательному интерфейсу, можно менять программу в памяти МК, уже установленного в готовую к применению систему. Для этого плата с контроллером должна быть подключена к питанию и генератору тактовых сигналов (см. рис. 2.11).


Рис. 2.11. Схеме подключения МК для программирования в системе.

На рис. 2.11 включены согласующие резисторы в линиях программирования, чтобы быть уверенным, что если схема программирования подает на эти линии сигналы, уровень которых отличается от того, который поступает на них от других устройств системы, состояния выводов не изменяться и на них не возникнет конфликт сигналов.

Для линии запуска используется другое подключение. Нормально на этой линии поддерживается высокий уровень сигнала, а программатор может подать на нее низкий, чтобы перевести МК в режим программирования по последовательному интерфейсу. Управление состоянием линии RESET осуществляется схемой, имеющий выход с открытым коллектором.

Эту схему можно использовать для программирования прикладной системы. Надо соединить МК (сигналы «земля», RESET, MISO, MOSI и SCK) с программатором при помощи 5-и контактного IDC-разъема.


2.3. Система команд микроконтроллера AVR

Микроконтроллеры AVR имеют очень широкий набор команд. Это позволяет более просто произвести разработку компиляторов, что также означает, что AVR может быть легко запрограммирован с использованием разнообразных команд, упрощающих решение задачи.

Следует обратить внимание на следующие тонкости. Многие команды могут обращаться только к 16-старшим РОН и не имеют доступа к 16-младшим. Значения смещений и констант могут быть ограничены и оказаться не в том диапазоне, который вы ожидали.

Существует различие между «полноценными» старшими моделями серии 8515 и младшими моделями серии 1200. Младшие модели МК реализуют часть полного набора команд, в которых доступен только один индексный регистр Z. Хотя при переносе программ с младших моделей на старшие вряд ли возникнут проблемы, они весьма вероятны при обратном направлении переноса. Даже с учетом всех этих предостережений AVR – это МК очень простой для программирования благодаря богатству набора команд и особенностям его структуры.

Для наглядности, в данном разделе приведем только некоторые примеры команд. Но прежде чем приступить к изучению команд, целесообразно рассмотреть различные способы адресации данных.

Способы адресации данных

Прямая адресация к Регистрам Общего Назначения

Основным способом доступа к данным является прямое (непосредственное) обращение к РОН. На рис. 2.12 операнд команды содержится в регистре Rd, а КОП обозначает часть слова команды, соответствующую Коду ОПерации, Обычно в формате команды отводиться пять бит, которые позволяют адресоваться к любому регистру.

Команды, оперирующие с двумя регистрами, действуют, в основном, аналогичным образом. В этих командах регистр-приемник Rd (destination) указывается перед регистром-источником Rr (resource), то есть является первым параметром (см. рис. 2.13). Таким образом, команда:

ADD R0, R1

реально выполняется так: R0 = R0 + R1.


Рис. 2.12. Прямая адресация одного регистра.

Результат сохраняется в регистре Rd.


Рис. 2.13. Прямая адресация к двум РОН.

Прямая адресация к регистрам ввода/вывода.

На рис. 2.14 адрес операнда содержится в 6 битах слова команды (ячейка Р).
Rd – определяет адрес регистра источника или регистра приемника. К примеру, этот тип адресации могут использовать команды IN или OUT:

IN R0, SREG ;сохранить регистр состояния в регистре R0

OUT PORTB, R1 ;записать данные из регистра R1 в PORTB


Рис. 2.14. Прямая адресация регистров ввода/вывода.