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

 
 
> Прерывание от TC, ищу совета в организации обработки
sailor
сообщение Dec 19 2007, 10:23
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 12-10-07
Пользователь №: 31 289



Имеем: AT91SAM7(X256 - но это уже не важно). Опыт работы с ним пока небольшой.
Используем таймер-счетчик. Нужно считать частоту. Т.е. работаем в режиме захвата. Используем прерывание. При этом при прохождении импульсов от 1 до N-1 в обработчике прерываний производим только фильтрацию, а по приходу N-го импульса, необходимо выполнить гораздо большую обработку: фильтрация + собственно вычисление частоты + расчет управляющего(их) воздействия(ий). Причем последняя часть довольно весома. И так по кругу.
Так вот вопрос связан с тем, как это все сорганизовать, что б задача расчета в обработчике прерывания не мешала работе самого ТС (подсчет интерчала следующего цикла) и в тго же время, что б решение не было б "тяжелым" по ресурсоемкости.
Есть конечно варинт с выставлением флага в обработчике при приходе N-го импульса, с проверкой данного флага в фоновой задаче и выполнением расчетов в фоновой задаче. Но, IMHO, не очень красиво.
Может кто-то подскажет что-то более оптимальное и красивое?
Не знаю, возможен ли вариант, когда в обработчике прерывания TC генерится программное прерывание, сам обработчик ТС при этом завершает работу, а расчет производится в обработчике программногго прерывания?
С уважением.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_dem
сообщение Dec 19 2007, 10:27
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



Цитата
Не знаю, возможен ли вариант
- возможен. Выставьте программному прерыванию более низкий приоритет

А чем вам не нравится вариант с флагом ?

ps - TC должен не генерить прерывание, а разрешать уже сгенеренное и активное

Сообщение отредактировал _dem - Dec 19 2007, 10:28
Go to the top of the page
 
+Quote Post
sailor
сообщение Dec 19 2007, 10:38
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 12-10-07
Пользователь №: 31 289



[quote name='_dem' date='Dec 19 2007, 13:27' post='340318']
- возможен. Выставьте программному прерыванию более низкий приоритет
[/quote]
Усек.
[quote name='_dem' date='Dec 19 2007, 13:27' post='340318']
А чем вам не нравится вариант с флагом ?
[/quote]
Задача описана упрощенно. Там еще куча чего будет напихано. И в т.ч. будут и прерывания (в т.ч. и от USART-а, от других ТС etc.). Они будут "отодвигать" фоновую задачу на неопределенные интервалы. Т.е. интервал между измерением и вычислением воздействия будет "плавающим", возможно с большим разбросом, что для данного типа задач не есть хорошо. С прерыванием (соответствующего приоритета), как мне кажется, данный интервал будет боле-мене стабилен.
Впрочем, это может только мои домыслы smile.gif
[/quote]
[quote name='_dem' date='Dec 19 2007, 13:27' post='340318']
ps - TC должен не генерить прерывание, а разрешать уже сгенеренное и активное
[/quote]
Чутка поподробней можно? К своему стыду с программными прерываниями на девайсе еще не работал. Все с аппаратными. Можно просто тыкнуть пальцем в пример. коий надо посмотреть. Так собственно все и осваивал: примеры + даташит.

Блин, не силен я в ХТМЛовских тегах sad.gif Приношу извинения.

Сообщение отредактировал sailor - Dec 19 2007, 10:40
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:53
Рейтинг@Mail.ru


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