Пятница, 26.04.2024, 20:01
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Реклама Google
Форма входа
Категории раздела
Это нужно знать! [17]
Изучаем AVR [30]
Программаторы [12]
Необходимое ПО [8]
Готовые устройства [73]
Справочная [38]
Инструмент [0]
Технология [8]
Литература [0]
Arduino скетчи [18]
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Микроконтроллеры - это просто!
Главная » Статьи » Изучаем AVR

Организация FLASH-памяти программ микроконтроллеров
Любая программа представляет собой определенный алгоритм действий, которые должен выполнять микроконтроллер. Для хранения программы и ее последовательного выполнения в микроконтроллерах AVR предназначена встроенная FLASH-память программ. В данной области памяти хранится откомпилированная, то есть переведенная в машинный язык программа. 

Объем памяти данного типа варьируется от 1 килобайта до 256 килобайт. Первое число в наименовании конкретной модели микроконтроллера указывает на размер памяти программ в килобайтах из ряда: 1, 2, 4, 8, 16, 32, 64, 128 и 256. Например, у ATtiny11 объем памяти программ составляет 1 килобайт, а у ATmega2560 — 256 килобайт. Число циклов перепрограммирования FLASH-памяти программ у микроконтроллеров AVR может достигать 10 тысяч.
Организация памяти программ представлена на следующем рисунке.


Структура памяти программ


Память программ состоит из набора пар 8-разрядных регистров, другими словами отдельная ячейка памяти программ представляет собой двухбайтное слово со своим адресом. Двухбайтовая организация памяти программ не случайна. Дело в том, что любая команда микроконтроллеров архитектуры AVR имеет длину ровно два байта. Исключением являются команды типа JMP, CALL, LPM и другие, оперирующие с 16-разрядными и более длинными адресами и занимающие 4 байта, эти команды используются в моделях с объемом памяти программ более 8 килобайт. Во всех остальных случаях при выполнении очередной команды программный счетчик сдвигается ровно на два байта. Исходя из количества команд, используемых в программе, можно подсчитать необходимый объем памяти программ для выбора модели микроконтроллера.

При сбросе микроконтроллера или включении питания программный счетчик обнуляется и начинается выполнение программы с ячейки памяти программ с адресом $0000. Обычно, начиная с этого адреса, то есть в самом начале программы располагают таблицу векторов прерываний, смысл которой мы рассмотрим позже. Однако, если в программе прерывания не используются, то прямо отсюда могут начинаться непосредственные указания к действию. Конечный адрес зависит от объема памяти программ и для удобства обозначается константой FLASHEND.

Следует отметить, что в последних адресах памяти программ может располагаться специальный загрузчик, который может управлять загрузкой и выгрузкой прикладных программ из основного объема памяти. Данная функция доступна только для микроконтроллеров семейства mega и будет подробнее описана в других статьях.
Категория: Изучаем AVR | Добавил: Alex (29.12.2013)
Просмотров: 2473 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024