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

 
 
> Можно ли добиться малого джиттера системного таймера, если есть прерывания с приоритетом выше сист. таймера
Дон Амброзио
сообщение Mar 6 2008, 06:50
Сообщение #1


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Мне требуется в обработчике системного таймера вести поллинг сигнала (потому что в MCU таймеров всего 2 (ATmega8515): один используется для ШИМ, а другой как сист.таймер).
Для этого требуется маленькая погрешность точек на временной оси взятия отсчётов сигнала.

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

А как вообще в операционках решают задачу когда прерывание с более высоким программным приоритетом обслуживания имеет низкий аппаратный приоритет. Как для него добиваются того, что даже при наличии прерываний с аппаратным приоритетом выше его приоритета LatencyTime было для него в допустимых пределах?

Сообщение отредактировал Дон Амброзио - Mar 6 2008, 07:04


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vshemm
сообщение Mar 9 2008, 18:30
Сообщение #2


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

Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803



SSerge умолчал о самом главном: после проверки флага прерывания от таймера (т.е. самого приоритетного в рамках системы) в других обработчиках нужно разрешить вложенные прерывания. Иначе к джиттеру добавится "хвост" от более высокоприоритетного (аппаратно) прерывания smile.gif
Только такой способ не сильно отличается от запрета всех нижлежащих перерываний и "разруливании" ситуации в одном обработчике (по критерию джиттера, конечно).
Go to the top of the page
 
+Quote Post
Baser
сообщение Mar 9 2008, 19:49
Сообщение #3


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(vshemm @ Mar 9 2008, 20:30) *
SSerge умолчал о самом главном: после проверки флага прерывания от таймера (т.е. самого приоритетного в рамках системы) в других обработчиках нужно разрешить вложенные прерывания. Иначе к джиттеру добавится "хвост" от более высокоприоритетного (аппаратно) прерывания smile.gif
"Проверка флага прерывания от таймера" уже производится в прерываниях. Поэтому если разрешить вложенные прерывания, мы придем к исходному состоянию и никакого выигрыша не получим smile.gif

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

Есть еще один метод: классическое вложенное прерывание для самого нужного обработчика. Но это более накладно: нужно во всех прерываниях запрещать все другие прерывания, кроме основного, и разрешать глобальный флаг. Что дольше, чем пару раз проверить один флаг.
Go to the top of the page
 
+Quote Post
vshemm
сообщение Mar 10 2008, 10:28
Сообщение #4


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

Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803



Цитата(Baser @ Mar 9 2008, 22:49) *
"Проверка флага прерывания от таймера" уже производится в прерываниях. Поэтому если разрешить вложенные прерывания, мы придем к исходному состоянию и никакого выигрыша не получим smile.gif

Ну как не получим, ведь проверка запроса от таймера есть в начале каждого обработчика. Возникнет наше прерывание - отлично, если не наше - тут же проверим запрос. Т.о., мы избавимся от "Далее вызов этой функции натыкал во все другие длительные прерывания равномерно". Фактически, это означает проверку запроса каждые 50 тактов в данном случае.
Однако, обработчики будут выполняться при разрешенных вложенных прерываниях, и это нужно учитывать при их написании.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Дон Амброзио   Можно ли добиться малого джиттера системного таймера   Mar 6 2008, 06:50
- - Непомнящий Евгений   Например: во всех нетривиальных аппаратных прерыва...   Mar 6 2008, 08:32
|- - Дон Амброзио   Цитата(Непомнящий Евгений @ Mar 6 2008, 11...   Mar 7 2008, 07:38
- - AlexandrY   У вас похоже на типичную ошибку планирования ресур...   Mar 7 2008, 08:24
|- - Дон Амброзио   Цитата(AlexandrY @ Mar 7 2008, 11:24) Пер...   Mar 7 2008, 08:50
|- - Baser   Цитата(Дон Амброзио @ Mar 7 2008, 10:50) ...   Mar 8 2008, 21:28
|- - Дон Амброзио   Цитата(Baser @ Mar 9 2008, 00:28) У АВР-о...   Mar 9 2008, 00:24
- - arttab   можно повысить рабочию частоту мк и за счет этого ...   Mar 8 2008, 11:00
- - Дон Амброзио   Решил делать так: 1.Запретить все прерывания, кром...   Mar 9 2008, 09:30
|- - AlexandrY   Что-то у вас совсем там плохо. На атмеге в нормаль...   Mar 9 2008, 10:06
|- - Дон Амброзио   Цитата(AlexandrY @ Mar 9 2008, 13:06) Что...   Mar 9 2008, 11:52
|- - vshemm   Цитата(Дон Амброзио @ Mar 9 2008, 14:41) ...   Mar 9 2008, 12:00
|- - Дон Амброзио   Цитата(vshemm @ Mar 9 2008, 15:00) Как мо...   Mar 9 2008, 12:05
|- - vshemm   Цитата(Дон Амброзио @ Mar 9 2008, 15:05) ...   Mar 9 2008, 12:34
- - SSerge   Если аппаратные приоритеты "неправильные...   Mar 9 2008, 13:01
|- - vshemm   Цитата(SSerge @ Mar 9 2008, 16:01) Если а...   Mar 9 2008, 13:15
- - Baser   Цитата(Дон Амброзио @ Mar 9 2008, 02:24) ...   Mar 9 2008, 17:20
|- - Дон Амброзио   Спасибо всем ответившим. Решил остановиться на та...   Mar 10 2008, 10:54
- - Дон Амброзио   И ещё одно отступление сделал от "классическо...   Mar 10 2008, 12:59
- - vshemm   При "классической" схеме подразумевается...   Mar 10 2008, 15:46
- - Дон Амброзио   Цитата(vshemm @ Mar 10 2008, 18:46) А уме...   Mar 10 2008, 16:49


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

 


RSS Текстовая версия Сейчас: 19th August 2025 - 03:21
Рейтинг@Mail.ru


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