Цитата(DpInRock @ May 26 2010, 18:51)

1. Два подряд VICVectAddr = 0; - не фэнщуй.
2. Без понятия volatile вам не жить.
1. Спасибо, постараюсь изучить. Хотя, с первого взгляда, операция безопасная, если выполняется с запрещёнными прерываниями (вольная цитата из мануала). Поправьте, ежли вру.
Кроме того я (пока) не вижу двух подряд... Со зрением что или в консерватории
2. Volatile, imho нужно для *важных* переменных, имеющих собственное мнение. Типа аппаратных счётчиков.
Глобальные переменные сами по себе не изменяются.
Например, в приведенном коде lbolt программно изменяется в единственном месте и его содержимое +-палка никаких последствий не влечёт. Безопасно то есть.
Если Вы знаете другие причины, зачем бы нужно было метить переменные volatile, поделИтесь, пож. с народом, а то не ровен час таки повымрет весь.

Ну, разместил я, скажем, буфер и зарядил на него бесконечный DMA неведомо отколе. Да, он volatile - ну и что? Никаких последствий, пока я сам не придумаю их.
---
Собственно, суть вопроса пока не прояснена. Попробую ещё раз:
Прерывания разрешены.
В регистр VICADDRESS попал нужный адрес из вектора.
СамогО прерывания нет. Почему? Можно ли где чего *увидеть* типа причины?
(переменные, в т.ч. volatile, - это потом. Лишняя запись в VICVectAddr - отличная идея, позволяющая, в случае правды, устранить проблему, но-увы -не увидеть - понять причину)