русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Шановні українці! Матеріал був перекладений з російської мови. Тому можуть бути незначні помикли...

Програмний лічильник і стек

У комірках оперативної пам'яті організовується системний стек, який використовується автоматично для адрес повернення при виконанні підпрограм, а також може використовуватися програмістом для тимчасового зберігання вмісту оперативних регістрів (команди PUSH та POP). На початку будь-якої програми необхідно ініціалізувати стек програмними засобами, тобто занести до покажчика Стека (Stack Pointer) початкове значення, рівне найстаршому адресою комірки в оперативній пам'яті. Мікроконтролери, не мають SRAM, містять трирівневий апаратний стек.
Слід мати на увазі, що якщо стек розташовується в зовнішній SRAM, то виклики підпрограм і повернення з них вимагають додаткових двох циклів, якщо біт SRW не встановлений, і чотирьох, якщо встановлений.
Розмір стека, який проводиться в оперативній пам'яті, обмежений лише розмірами цієї пам'яті. Якщо мікроконтроллер містить на кристалі 128 байт внутрішньої SRAM і не має можливості підключення зовнішньої SRAM, то як покажчик вершини стека використовується регістр вводу/виводу SPL. Якщо є можливість підключення зовнішньої пам'яті або внутрішня пам'ять має розміри 256 байт і більше, то покажчик стека складається з двох регістрів введення/виводу SPL і SPH.
При занесенні числа в стек автоматично виконуються наступні дії:

  1. Кількість записується в комірку пам'яті за адресою, заховану в покажчику стека. (SPH:SPL) <- число;
  2. Вміст покажчика стека зменшується на одиницю. SPH:SPL = SPH:SPL - 1.

Зворотні дії виконуються при витяганні числа зі стеку:

  1. Вміст покажчика збільшується на одиницю. SPH:SPL= SPH:SPL + 1;
  2. Кількість витягується з комірки пам'яті з адресою, що зберігаються в покажчику стека. (SPH:SPL) -> число.

Таким чином, стек зростає від старших адрес до молодшим, тому, враховуючи, що початкове значення покажчика стека після скидання дорівнює нулю, програміст AVR обов'язково повинен ініціалізуючої частини програми подбати про встановлення покажчика стека, якщо він припускає використовувати хоча б одну підпрограму.
Крім оперативної пам'яті програмно доступними ресурсами мікроконтролера є енергонезалежні, електрично програмовані FLASH і EEPROM блоки пам'яті, які мають окремі адресні простору.
Молодші адреси пам'яті програм мають спеціальне призначення. Адреса $0000 є адресою, з якого починає виконуватися програма після скидання процесора. Починаючи з наступного адреси $0001, комірки пам'яті програм утворюють область векторів переривання. У цій області для кожного можливого джерела переривання відведено свою адресу, за яким (у разі використання даного переривання) розміщують команду відносного переходу RJMP на підпрограму обробки переривання (див. мал. 2.3). Слід пам'ятати, що адреси векторів переривання одних і тих же апаратних вузлів для різних типів AVR можуть мати різне значення. Тому для забезпечення переносимості програмного забезпечення зручно, так само як і у випадку з регістрами введення/виводу, використовувати символічні імена адрес векторів переривання, які визначені у відповідному inc-файлі.
EEPROM блок електрично зтираЄмою пам'яті даних AVR призначений для зберігання енергозалежних даних, які можуть змінюватися безпосередньо на об'єкті. Це калібровані коефіцієнти, різні установки, конфігураційні установки системи тощо. EEPROM-пам'ять даних може бути програмним шляхом як зчитана, так і записана. Проте спеціальних команд звернення до пам'яті EEPROM-немає. Читання і запис осередків EEPROM виконується через регістри вводу/виводу EEAR (реєстр адреси), EEDR (регістр даних) і EECR (реєстр управління).

 

 

Рис. 2.3. Програмна модель AVR-мікроконтролерів.

Переглядів: 9364

Повернутися в зміст: Архітектура мікроконтролерів




Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн