|
Можно ли добиться малого джиттера системного таймера, если есть прерывания с приоритетом выше сист. таймера |
|
|
|
 |
Ответов
|
Mar 7 2008, 08:24
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
У вас похоже на типичную ошибку планирования ресурсов. В нормально спланированной системе нет проблем недостатка таймеров. Общее время обслуживания всех реалтайм задач за время системного тика должно быть не больше 70% его продолжительности. Фиксация точного времени поступления событий осуществляется capture логикой. Если нужно генерировать сигналы с точным временем, то на это есть compare логика в таймерах. Переходите на Cortex M3 и не будете иметь проблем. Если реально времени системного тика не хватает на обработку всех прерываний, то используют 2-х и более процессорные схемы: http://aly.ogmis.lt/OpenProjects/ARMDominator4/ARMD4.htm Цитата(Дон Амброзио @ Mar 6 2008, 11:20)  Мне требуется в обработчике системного таймера вести поллинг сигнала (потому что в MCU таймеров всего 2 (ATmega8515): один используется для ШИМ, а другой как сист.таймер). Для этого требуется маленькая погрешность точек на временной оси взятия отсчётов сигнала.
Из-за того, что существуют прерывания, приоритет которых выше прерывания таймера, приходиться их запрещать (дабы джиттер не увеличили сверх допустимого значения) и осуществлять их поллинг в обработчике сист.таймера. Из-за чего ISR системного таймера ещё больше "пухнет" в размерах. Из-за этого приходиться уменьшать частоту сэмплирования сигнала, что ухудшает качество девайса.
А как вообще в операционках решают задачу когда прерывание с более высоким программным приоритетом обслуживания имеет низкий аппаратный приоритет. Как для него добиваются того, что даже при наличии прерываний с аппаратным приоритетом выше его приоритета LatencyTime было для него в допустимых пределах?
|
|
|
|
|
Mar 7 2008, 08:50
|

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

|
Цитата(AlexandrY @ Mar 7 2008, 11:24)  Переходите на .... Цитата(AlexandrY @ Mar 7 2008, 11:24)  ... то используют 2-х и более процессорные схемы... Просто "Железо" уже разработано. И надо использовать по максимуму его возможности. P.S. Хотя конечно в следующей разработке будут учтены все "узкие" места. Но это в СЛЕДУЮЩЕЙ разработке. А мне нужно как-то выкручиваться с уже имеющемся "железом" Цитата(AlexandrY @ Mar 7 2008, 11:24)  У вас похоже на типичную ошибку планирования ресурсов. В нормально спланированной системе нет проблем недостатка таймеров. Тут даже проблема не в недостатке таймеров, а в том, что аппаратный приоритет прерывания системного таймера нельзя менять. В результате чего у меня получается, что прерывания имеющие низкий ПРОГРАММНЫЙ приоритет имеют высокий АППАРАТНЫЙ приоритет. Вот с этим главный гимор
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
Mar 8 2008, 21:28
|

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

|
Цитата(Дон Амброзио @ Mar 7 2008, 10:50)  Тут даже проблема не в недостатке таймеров, а в том, что аппаратный приоритет прерывания системного таймера нельзя менять. В результате чего у меня получается, что прерывания имеющие низкий ПРОГРАММНЫЙ приоритет имеют высокий АППАРАТНЫЙ приоритет. Вот с этим главный гимор Не понял вашего высказывания. У АВР-ок только один уровень прерываний. И соответственно, АППАРАТНЫЙ приоритет прерываний работает только тогда, когда ОДНОВРЕМЕННО происходит больше одного события, требующего обработки прерывания. А в случае, когда программа УЖЕ находится в прерывании, его не может прервать ни одно другое, даже с самым высоким аппаратным приоритетом. Это возможно только при организации программных вложенных прерываний. Применял вложенные прерывания именно для уменьшения джиттера при динамической индикации. Правда там не было РТОС.
|
|
|
|
|
Mar 9 2008, 00:24
|

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

|
Цитата(Baser @ Mar 9 2008, 00:28)  У АВР-ок только один уровень прерываний. Цитата(Baser @ Mar 9 2008, 00:28)  АППАРАТНЫЙ приоритет прерываний работает ... Вторая фраза противоречит первой: получается из Ваших слов в AVR у прерываний приоритета нет, а вроде как бы и есть И как же Вы уменьшали джиттер, используя вложенные прерывания? Наверное глобально разрешая как можно быстрей прерывания в обработчиках прерываний?
Сообщение отредактировал Дон Амброзио - Mar 9 2008, 00:42
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
Сообщений в этой теме
Дон Амброзио Можно ли добиться малого джиттера системного таймера Mar 6 2008, 06:50 Непомнящий Евгений Например: во всех нетривиальных аппаратных прерыва... Mar 6 2008, 08:32 Дон Амброзио Цитата(Непомнящий Евгений @ Mar 6 2008, 11... Mar 7 2008, 07:38 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 vshemm SSerge умолчал о самом главном: после проверки фла... Mar 9 2008, 18:30 Baser Цитата(vshemm @ Mar 9 2008, 20:30) SSerge... Mar 9 2008, 19:49  vshemm Цитата(Baser @ Mar 9 2008, 22:49) "П... Mar 10 2008, 10:28   Дон Амброзио Спасибо всем ответившим.
Решил остановиться на та... 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|