реклама на сайте
подробности

 
 
> Прерывания, для кого-то ну очень уж простые вопросы
Sneg_87
сообщение Oct 15 2009, 07:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882



Вот в прерываниях есть маска и флаг прерываний?
Для чего они нужны, в чем их отличия. При желании можно скинуть ссылку на общее (широкое) приедназначение этих регистров.
К примеру у AT90S2313 имеется 2 регистра маски прерываний GIMCK-общий регистр маски прерываний и TIMCK- регистр прерываний от тацмера/счетчика.


--------------------
coding, кодинг, koDinГ, copyriting, printing ....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Палыч
сообщение Oct 15 2009, 07:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Sneg_87 @ Oct 15 2009, 10:35) *
Вот в прерываниях есть маска и флаг прерываний?
Для чего они нужны, в чем их отличия.
Маска прерывания разрешает/запрешает(маскирует) прерывания от конкретного события. Флаг сигнализирует, что такое событие имело место.
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 15 2009, 07:44
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Маска предназначена для разрешения и запрета прерываний. Флаги - для регистрации событий, вызывающих прерывания. С флагами можно работать по опросу их состояния, даже если прерывания запрещены маской.
Go to the top of the page
 
+Quote Post
Sneg_87
сообщение Oct 15 2009, 08:18
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882



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


--------------------
coding, кодинг, koDinГ, copyriting, printing ....
Go to the top of the page
 
+Quote Post
hobgoblin
сообщение Oct 15 2009, 08:50
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881



Зависит от внутренней архитектуры процесора, который вы используете. Это может быть например изменение сигнала на внешнем выводе процессора, обнуление таймера, прием одиночного слова или заполнение буфера данных в режиме DMA каким-то из портов процессора, возникновение какой-то ошибки (например нехватка данных в буфере порта или его переполнения) и много чего еще. Читайте руководство по процессору, там все будет написано biggrin.gif .
Go to the top of the page
 
+Quote Post
BORIV
сообщение Oct 15 2009, 09:08
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 131
Регистрация: 5-05-06
Пользователь №: 16 820



Флаги прерываний устанавливаются по событиям. Событий бывает много разных, как внутрених, так и внешних. Переполнение таймера, как Вы догадались, является внутренним событием и выставляет флаг прерывания по переполнению таймера. Если прерывание разрешено и если не установлены флаги с более высокими приоритетами, то управление будет передано на ячейку памяти, соответствующую этому прерыванию. По вектору прерывания с адресом ... .
Внешним событием может быть, например, изменение уровня на входе INT0 (или появление там единицы, как запрограммируете), что при соблюдении вышеперечисленных условий, приведёт к прерыванию программы, но уже по другому вектору. Перед прерыванием микроконтроллер запомнит в стеке адрес возврата и регистр состояния.
В ячейке памяти по вектору прерывания лежит команда, которая исполняется первой, при входе в прерывание.
Прерывания имеют приоритеты: прерывание с более высоким приоритетом, обслуживается в первую очередь и может прервать прерывание с более низким приоритетом. Можно или нет изменить приоритет прерывания, определяется конкретным контроллером. При выходе из прерывания микроконтроллер забирает из стека адрес возврата и состояние регистра состояния.
Вот вкратце и всё. Надеюсь, что заинтересовало.
Книжки читать всё равно придётся. rolleyes.gif
Go to the top of the page
 
+Quote Post
uriy
сообщение Oct 15 2009, 15:22
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
Прерывания имеют приоритеты: прерывание с более высоким приоритетом, обслуживается в первую очередь и может прервать прерывание с более низким приоритетом.
Это справедливо если разрешены вложенные прерывания. В большинстве контроллеров вложенные прерывания по дефолту запрешены. Тогда следующее прерывание будет обслуживаться при выходе из текущего. Еще есть глобальный флаг разрешения прерываний. Он позволяет разрешить/запретить сразу все прерывания.
Go to the top of the page
 
+Quote Post
manul78
сообщение Oct 15 2009, 17:58
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



Цитата(uriy @ Oct 15 2009, 19:22) *
Это справедливо если разрешены вложенные прерывания. В большинстве контроллеров вложенные прерывания по дефолту запрешены. Тогда следующее прерывание будет обслуживаться при выходе из текущего. Еще есть глобальный флаг разрешения прерываний. Он позволяет разрешить/запретить сразу все прерывания.


Дык вот для этого и существуют флаги. Т.к. в обработчике можно изменением флага запретить выполнение последующего
(уже не нужного) прерывания. Помню на тиньке 2313 обрабатывал сигналы с безконтактных датчиков. Программа зацикливалась на бесконечной обработке. Доработал обработчик и все пошло... помню пол-дня ходил под впечатлением типа
"А в Атмеле далеко не дураки сидят !!!" smile.gif


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
Diusha
сообщение Oct 16 2009, 03:00
Сообщение #9


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(BORIV @ Oct 15 2009, 12:08) *
Прерывания имеют приоритеты: прерывание с более высоким приоритетом, обслуживается в первую очередь и может прервать прерывание с более низким приоритетом.

Цитата(uriy @ Oct 15 2009, 18:22) *
Это справедливо если разрешены вложенные прерывания. В большинстве контроллеров вложенные прерывания по дефолту запрешены. Тогда следующее прерывание будет обслуживаться при выходе из текущего.

О чем вы? Речь идет об АВР! Там вложенные прерывания разрешаются установкой глобального флага разрешения прерываний (sei - на асм) в теле пп обр. прер. Начхать хотел АВР на приоритеты. Приоритеты играют роль, когда
а) >1 события (выз. прер.) происходят обновременно (маловероятно) или
б) >1 события произошли когда все прерывания были запрещены, а потом их разрешили (разрешили - sei или выход из пп прер.)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 13:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01443 секунд с 7
ELECTRONIX ©2004-2016