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

 
 
> Как сделать прерывание внутри прерывания в blackfin?
dipdip
сообщение Mar 16 2016, 13:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 30-09-07
Пользователь №: 30 957



Нужно сделать прерывание внутри обработчика прерывания в блекфине.

Как это сделать?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Mar 17 2016, 06:29
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (dipdip @ Mar 16 2016, 19:14) *
Нужно сделать прерывание внутри обработчика прерывания в блекфине.

Как это сделать?

Не вполне ясно, что именно нужно сделать. CEC у фина приоритетный, т.е. более приоритетное прерывание вытесняет менее приоритетное.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
dipdip
сообщение Mar 17 2016, 10:19
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 30-09-07
Пользователь №: 30 957



Цитата(dxp @ Mar 17 2016, 09:29) *
Не вполне ясно, что именно нужно сделать. CEC у фина приоритетный, т.е. более приоритетное прерывание вытесняет менее приоритетное.


Если работает обработчик прерывания с приоритетом N, то во время его работы при появлении
прерывания с более высоким приоритетом произойдет переход на новое сразу,
или закончится текущее, а потом переход на новое?

Мне нужно использовать 3 таймера.

Во время обработки прерывания от 1-го и возникновении прерывания от 2-го будет сразу переход на обработку 2-го, или
закончится обработка 1-го и потом переход?

Go to the top of the page
 
+Quote Post
dxp
сообщение Mar 18 2016, 05:34
Сообщение #4


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (dipdip @ Mar 17 2016, 16:19) *
Если работает обработчик прерывания с приоритетом N, то во время его работы при появлении
прерывания с более высоким приоритетом произойдет переход на новое сразу,
или закончится текущее, а потом переход на новое

Разумеется, более приоритетное вытеснит (отберёт управление) у низкоприоритетного, я ведь так и написал. Иначе просто нет смысла в этих приоритетах.

QUOTE (dipdip @ Mar 17 2016, 16:19) *
Во время обработки прерывания от 1-го и возникновении прерывания от 2-го будет сразу переход на обработку 2-го, или
закончится обработка 1-го и потом переход?

Если будет ждать, пока закончится текущее, то это никакая не приоритетная реализация, а обычная одноранговая. Вы Hardware Reference почитайте внимательнее, глава 3 Operating Modes and States, там описан режим работы в без-ОСном окружении, т.е. в прерывании (исключении) на низком приоритете IVG15, при котором процессор находится в Supervisor режиме, и все остальные исключения, тем не менее, прерасно прерывают поток выполнения этого уровня.

Другое дело, если обработчики прерывания отмаплены на один тот же уровень в CEC, тогда вытеснения не произойдёт, т.к. в пределах одного уровня исключений обработка ведётся по одноранговой схеме. Т.е., например, если использовать Timer0, Timer1, Timer2 (BF533), то они все "висят" на IVG11, т.е. их обработчики прерываний друг друга вытеснять не могут, будут работать по очереди. А вот если один из таймеров из этого набора, а второй - Core Timer, то обработчик прерывания Core Timer без вопросов отберёт управление у обработчика прерываний TimerN. Таким образом, всё зависит от того, как вы организуете свою программу.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



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

 


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


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