Цитата(_Артём_ @ Nov 23 2012, 01:35)

Мне как-то трудно представить, зачем допускать ситуацию, когда вложенность одного и того же прерывания больше 1. Разрешить работать другим прерываниям - понятно, а так - не очень.
Ну мало ли какие алгоритмы работы встречаются. Иногда бывает, что весь алгоритм выполняется внутри одного единственного прерывания, а main при этом просто пустой цикл. Сходу могу припомнить только один пример - перерывание "системных тиков" в котором работает программный RTC. Счетчик RTC должен инкрементироваться на каждый "системный тик", а все остальное, обслуживаемое в данном прерывании, может и подождать. В случае, когда период вызова "системных тиков" оказывается меньше, чем время его обработки, часть его можно "обойти", вызвав лишь функцию RTC. Но для этого нужен какой-то детектор вложенности прерываний, хотя бы в виде счетчика.
Цитата(_Артём_ @ Nov 23 2012, 01:35)

Обычно так и делаю (на АВР правда, но какая разница). Но перед этим запрещаю тот обработчик, который выполняется в текущий момент.
Да, так и делают при необходимости. Дело в том, что у MSP430 не все флаги прерываний сбрасываются автоматически при переходе по вектору прерывания. Некоторые сбрасываются лишь при определеных условиях (после чтения регистра статуса UART, например), а другие вообще только программно очищаются (P1IFG и P2IFG, например). Бит GIE же при переходе по вектору прерывания автоматически сбрасывается всегда.