|
Основной цикл или обработчик прерываний, Что лучше утяжелять? |
|
|
|
Oct 4 2005, 04:46
|

Профессионал
    
Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371

|
Кто какими критериями пользуется выбирая место размещения вызовов функций? В главном цикле, обработчике прерываний или по условию из глав. цикла. У меня в программе есть функции которые имеет смысл вызывать при прерываниях: АЦП, УАРТ,.... если они будут в глав. цикле - увеличится длительность цикла. если в обработчике, то длительность обработки, если по условию, то нужно больше создавать программных флагов (по условию). Кто как решает?
--------------------
OrCAD, Altium,IAR, AVR....
|
|
|
|
|
 |
Ответов
|
Oct 4 2005, 07:21
|
Частый гость
 
Группа: Свой
Сообщений: 106
Регистрация: 28-09-05
Пользователь №: 9 035

|
Я эту проблему решал (на AVR же) путем введения третьего дополнительного уровня, промежуточного между головной программой и обработчиком прерываний. Идея в следующем: - обработчик прерываний выполняет минимально необходимые действия (например, читает UDR), после чего вызвает обработчик среднего уровня. Ему передаются как параметры указатель на функцию, которую необходимо выполнить и, как опция, параметр для этой функции (например, считанное из UDR значение). - при вызове обработчик среднего уровня записывает принятые параметры в FIFO и смотрит, что было прервано - головная программа или выполнение функций из этого FIFO (по спец.флагу). Если головная программа, то флаг взводится и запускается выполнение из FIFO. Если же было прервано выполнение из FIFO (флаг уже стоял), то управление туда и возвращается. - выполнение из FIFO идет при разрешенных прерываниях, отуда выбирается указатель на очередную функцию и параметр для нее, затем функция вызывается. После возврата из функции лезем в FIFO за следующей и, если там пусто - сбрасываем флаг и возвращаем управление головной програме.
|
|
|
|
Сообщений в этой теме
arttab Основной цикл или обработчик прерываний Oct 4 2005, 04:46 Andy Mozzhevilov Цитата(arttab @ Oct 4 2005, 09:46)Кто какими ... Oct 4 2005, 05:09 Born Если в прерываниях не используютчя таймеры (то ест... Oct 4 2005, 05:24 arttab мк AVR. и операционка отпадает Oct 4 2005, 05:31 Andy Mozzhevilov Цитата(arttab @ Oct 4 2005, 10:31)мк AVR.... Oct 4 2005, 05:36  Evgeny_CD Цитата(Andy Mozzhevilov @ Oct 4 2005, 09:36)м... Oct 5 2005, 08:50   dxp Цитата(Evgeny_CD @ Oct 5 2005, 14:50)Цитата(A... Oct 5 2005, 10:44 upc2 Цитата(arttab @ Oct 4 2005, 08:31)мк AVR.... Oct 4 2005, 06:58 dxp Цитата(kons @ Oct 4 2005, 13:21)Я эту проблем... Oct 4 2005, 12:34 defunct Цитата(kons @ Oct 4 2005, 09:21) Идея в с... Feb 10 2006, 08:26 kons На AVR (mega103/128). Только RTOS - несколько гром... Oct 4 2005, 13:59 Olxx Если не жалко отдать 5-10% циклов на overhead план... Oct 5 2005, 01:17 TMX Цитата(Olxx @ Oct 5 2005, 04:17) А если п... Feb 13 2006, 11:40  defunct Цитата(TMX @ Feb 13 2006, 13:40) Если обр... Feb 13 2006, 21:15   dxp Цитата(defunct @ Feb 14 2006, 03:15) Цита... Feb 14 2006, 07:32    defunct Цитата(dxp @ Feb 14 2006, 09:32) Это как ... Feb 14 2006, 12:08 arttab Спасибо за ваши мнения. Интересный вопрос я задал.... Oct 5 2005, 03:55 Seishel релиз простой, если вам необходимо мгновенно обраб... Feb 9 2006, 15:46 TMX ЦитатаНе скажите, предсказуемость наоборт нарушитс... Feb 14 2006, 07:41 dxp Цитата(TMX @ Feb 14 2006, 13:41) кооперат... Feb 14 2006, 08:18 TMX Цитата(dxp @ Feb 14 2006, 11:18) proc, вр... Feb 14 2006, 09:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|