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

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


Профессионал
*****

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



Кто какими критериями пользуется выбирая место размещения вызовов функций? В главном цикле, обработчике прерываний или по условию из глав. цикла.
У меня в программе есть функции которые имеет смысл вызывать при прерываниях: АЦП, УАРТ,.... если они будут в глав. цикле - увеличится длительность цикла. если в обработчике, то длительность обработки, если по условию, то нужно больше создавать программных флагов (по условию). Кто как решает?


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kons
сообщение Oct 4 2005, 07:21
Сообщение #2


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

Группа: Свой
Сообщений: 106
Регистрация: 28-09-05
Пользователь №: 9 035



Я эту проблему решал (на AVR же) путем введения третьего дополнительного уровня, промежуточного между головной программой и обработчиком прерываний. Идея в следующем:
- обработчик прерываний выполняет минимально необходимые действия (например, читает UDR), после чего вызвает обработчик среднего уровня. Ему передаются как параметры указатель на функцию, которую необходимо выполнить и, как опция, параметр для этой функции (например, считанное из UDR значение).
- при вызове обработчик среднего уровня записывает принятые параметры в FIFO и смотрит, что было прервано - головная программа или выполнение функций из этого FIFO (по спец.флагу). Если головная программа, то флаг взводится и запускается выполнение из FIFO. Если же было прервано выполнение из FIFO (флаг уже стоял), то управление туда и возвращается.
- выполнение из FIFO идет при разрешенных прерываниях, отуда выбирается указатель на очередную функцию и параметр для нее, затем функция вызывается. После возврата из функции лезем в FIFO за следующей и, если там пусто - сбрасываем флаг и возвращаем управление головной програме.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 11:54
Рейтинг@Mail.ru


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