[uquote="Reflector",url="/forum/viewtopic.php?p=3449339#p3449339"]Я вчера еще застал первую редакцию сообщения в которой говорилось, что NVIC->ISPR - это и есть аппаратная очередь

[/uquote]
По способу заполнения -- это буфер, по способу выборки -- очередь. Не понимаю, на что вы возбудились.
Подумал ну все, с утра придется объяснять что такое очередь, стек, может даже байт и бит, так что спасибо, что избавил от такой незавидной участи, правда я совсем не уверен насчет того, что меня опят не обвинят во лжи, ты же просто не мог написать такую глупость... Или мог?
Временами мне кажется, что театрально-сценическая составляющая ваших речей для вас гораздо важнее технического наполнения. Втяните звук обратно в фанфары.
Прерыванию не важно какой код выполняется в суперлупе, ведь оно его, собственно, прерывает. И тяжелой обработки там обычно нет тоже, а при чистом поллинге она там есть и может занимать значительное время, во время которого ничего в очередь добавить не получится, разве что придется дробить задачи на достаточно мелкие, что ты сам делать не особо любишь, да и все равно это лишь полумера.
Да без разницы, кто и каким образом друг друга прерывает. Не принципиально, как регистрировать входные события. Обработку же все равно по принципу многозадачности делать, кусочками, чтобы оперативно отслеживать появление более приоритетных заданий и/или данных. Вам один фиг к своим прерываниям придется городить свою очередь и свой поллинг. Точ такой же поллинг, что вы тут поносите.
Вы цепляетесь так за прерывания, скорее всего потому, что _всегда_, в нарушение всех рекомендаций, делаете _всю_ обработку прямо в обработчике. Отсюда и столь кривое восприятие, что в прерываниях весь цимус. Как только вы начнете действовать по правилами и мыслить категориями распределенной обработки, исключительная привлекательность использования прерываний сильно поблекнет.
На прерывание тратится 12+10 тактов, если прерывания накладываются, то каждое последующее добавляет лишь 6 тактов, т.е. если достаточно часто вызывается 5 обработчиков, то затраты варьируют от 22+4*6=46 до 22*5=110 тактов. При поллинге,
Измерять можно по разному. При продумывании функционала диспетчера представляется очевидным, что под самые частые события имеет смысл выделить обработчики с минимальными показателями латентности. Таким образом, если построить модель, когда за период наблюдения первый обработчик отработает 10 раз, второй -- 9 и так до 5-го, который отработает 6 раз, то общее число событий будет равно сорока, а процессорное время на обработку их поллингом окажется где-то в районе 550 тактов. Время, затраченное процессором на отработку такого же количества прерываний, составит 880, если считать без учета Tail-Chaining. С последним получится поменьше, но ожидать, что это снижение составит около 40%, чтобы сравняться с поллингом, никак не представляется возможным.