Ответ.
Задать вопрос!
Вход Регистрация
Задать вопрос!
Все категории
  • Фотография и видеосъемка
  • Знания
  • Другое
  • Гороскопы, магия, гадания
  • Общество и политика
  • Образование
  • Путешествия и туризм
  • Искусство и культура
  • Города и страны
  • Строительство и ремонт
  • Работа и карьера
  • Спорт
  • Стиль и красота
  • Юридическая консультация
  • Компьютеры и интернет
  • Товары и услуги
  • Темы для взрослых
  • Семья и дом
  • Животные и растения
  • Еда и кулинария
  • Здоровье и медицина
  • Авто и мото
  • Бизнес и финансы
  • Философия, непознанное
  • Досуг и развлечения
  • Знакомства, любовь, отношения
  • Наука и техника
Ekron
9 дней назад
0

Как работают прерывания и стеки в микроконтроллере?

наука и техника
программирование
цифровые устройства
1 ответ:
jar-ohty [106K]9 дней назад
3 0

Прерывание -- это механизм, осуществляющий прекращение исполнения основного кода и передачу управления по заданному адресу (вектору прерывания) при возникновении какого-либо события. Этим событием может быть поступление внешнего сигнала от порта ввода-вывода или периферийного устройства, аппаратный сбой или программная ошибка (например, деление на ноль или попытка обращения к памяти по неразрешенному адресу), или выполнение специальной команды запроса прерывания. Особым видом прерывания является аппаратный сброс.

При поступлении прерывания обычно происходит следующее. Процессор останавливает исполнение кода и помещает содержимое счетчика команд на верхушку стека, а затем загружает в счетчик команд адрес в таблице векторов, соответствующий данному прерыванию. Таблица векторов представляет собой кусок памяти, заполненный командами безусловного перехода к адресам обработчиков прерываний, и исполнив одну из этих команд, процессор перепрыгивает на нужный обработчик прерывания. Первоочередной задачей его является как можно скорее запретить все другие прерывания и сохранить содержимое регистров процессора на стеке. После завершения своей работты обработчик снимает со стека и восстанавливает содержимое регистров и разрешает прерывания, а затем команда reti берет со стека адрес, на котором случилось прерывание, и помещает его в счетчик команд. После этого продолжается исполнение основного кода, как будто ничего и не случилось.

Что такое стек? Это некоторая область памяти и регистр -- указатель стека. Когда мы помещаем что-либо на стек (условно -- команда push), мы записываем это что-то по адресу, соответствующему указателю стека и автоматически уменьшаем содержимое регистра на длину машинного слова, который теперь указывает на следующую "чистую" ячейку памяти. Чтобы снять что-то со стека, мы увеличиваем адрес на длину машинного слова и копируем содержимое ячейки по получившемуся адресу в соответствующий регистр.

Выше описано использование стека при возникновении прерываний. Но стек удобно использовать в первую очередь при вызове подпрограмм. При вызове подпрограмм (команда call) происходит то же самое, что при прерывании: адрес, с которого произошел вызов, кладется на стек. Перед этим на стек можно положить данные, которые далее будут использоваться подпрограммой. Временные переменные, используемые только подпрограммой, тоже часто хранят на стеке. После завершения подпрограммы, как и при завершении обработчика прерывания, восстанавливаются регистры и вызывается команда ret, которая передает управление на следующую после вызова команду, взяв адрес опять-таки из стека. Разумеется, чтобы это сработало, надо, чтобы подпрограмма, завершаясь, корректно "убрала за собой", восстановив не только регистры, но и указатель стека. Вернуть результат исполнения можно опять-таки через стек.

Читайте также
Какой график отключения горячей воды в 2015 году в Самаре (по районам)?
Alen4uk [160K]

График отключения горячей воды в городе Самаре в связи с профилактическими работами можно посмотреть на этом сайте.

Не повезло жилым домам, которые находятся в центре города. Их обслуживает ГРЭС. Отклучение у них продлится более двух недель с 21 мая по 9 июня.

Другие дома будут отключаться не больше двух недель.

2 0
3 года назад
Прочитать ещё 9 ответов
Почему в советской бытовой электронике предохранитель был снаружи?
bersnick [999]

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

1 0
3 года назад
Прочитать ещё 10 ответов
Стоит ли обновлять android? Что это даст?
Muryss [204]

Мне кажется, прежде чем решаться на обновление, надо выяснить, какие требования предъявляет новая версия ОС к ресурсам устройства. Может начать не хватать оперативной памяти или производительности процессора. Ведь обновления ПО выпускаются с учетом идущего прогресса техники и ориентированы на самые современные устройства с их большими возможностями. На более старую модель новый Android может и не установиться, а если установится, то будет сильно тормозить.

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

Например, авторитетный ресурс 4pda.ru , форум по Андроиду http://4pda.ru/forum/index.php?showforum=281

3 0
3 года назад
Прочитать ещё 11 ответов
Самая большая планета в галактике какая?
MR Minion [6.5K]

Самая большая планета в нашей галактике – это TrES-4. Она была обнаружена в 2006 году, в созвездии Геркулес. Планета представляет шар, практически весь состоящий из водорода. Больше нащей Земли в 20 раз. Температура около 1260 градусов по Цельсию. На этой планете отсуствует твердая поверхность, потому по ней, не смотря на высокую температуру, невозможно пройти, разве что поплавать.

3 0
3 года назад
Прочитать ещё 7 ответов
Как изменилась бы наша жизнь, если бы у нас был домашний робот?
N-star [55.3K]

Я смотрела фильм "Люди" уже три сезона вышли.

Тема биороботов в жизни людей. По закону жанра они конечно восстали против.

И пошла заварушка с синей, и красной кровью, замешанная на вопросах этики, и морали.

Но мне кажется вся эта тема роботов большой ошибкой,

Зачем им придавать сходство с человеком?

Человек неудобно устроен: у него всего две ноги, а лучше было бы пару колёсиков.

И причёски это лишнее, и ручки одинаково мелкие, а надо одну руку большую тяжелую,

а второй прибавить кол-во удлинённых пальцев.

А домашние роботы у нас уже есть:

Посудомойка, стиральная машина, робот-пылесос (самый бесполезный шумный робот),

хлебопечка и т.д.

Они существенно помогают в нашей жизни, нам добавилось свободного времени

для свершения каких нибудь подвигов или решения интеллектуальных задач.

Но жизнь, почему-то не изменилась.

20 0
3 года назад
Прочитать ещё 8 ответов
Смотрите также:
  • Как разобрать по составу слово порядок?
    6·7 ответов·русский язык
  • Правда ли, что самолеты сбрасывают остатки топлива перед посадкой?
    8·10 ответов·самолет
  • При какой температуре начинает плавиться пластиковая бутылка?
    5·9 ответов·пластиковая бутылка
  • Почему стрелки часов идут слева на право, кто так определил?
    5·8 ответов·стрелки часов
  • Как пишется правильно: то бишь или тобишь?
    5·10 ответов·правописание
  • Какова форма Земли?
    5·11 ответов·земля
  • Зачем нужен этот чугунный "грибок" у ограды на московском бульваре?
    5·6 ответов·история
  • Как перевести газ в Гкал?
    8·11 ответов·газ
  • Самомнение. Каков психологический портрет обладателя?
    7·9 ответов·психология
  • Состоялся ли полет марсианского вертолета сегодня, 19 апреля 2012 года?
    6·2 ответа·марс
Добавить ответ
Вход
Не зарегистрированы? Пройти быструю регистрацию
Регистрация
Вход Регистрация
Задать вопрос!