Стек данных

Схема обработки прерывания

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

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

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

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

Стек данных строится по типу LIFO (последним зашел - первым вышел).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: