2016-11-13 13 views

ответ

1

Когда msp430 микроконтроллера собирается начать выполнять прерывание функции обработчика, то первое, что он делает это, чтобы отключить глобальные «перебивает» включен флаг, который немного в регистре состоянии r2. Это эффективно запрещает вложение прерываний по умолчанию.

Чтобы обойти это, включите прерывание, установив флаг регистра обратно в 1 в начале ваших функций обработчика прерываний. Для упрощения синтаксиса, есть на самом деле eint инструкция для этого:

asm("eint"); 

Обычно существуют также компилятор конкретных макросов для emnabe, которые позволяют избежать написания кода сборки. Это должно работать как с GCC и IAR:

__enable_interrupt(); 

(Пожалуйста, не засоряйте вложенности прерываний В большинстве случаев нет абсолютно никакой необходимости в ней почти наверняка, лучше изменить дизайн, чем пойти на это.. .)

 Смежные вопросы

  • Нет связанных вопросов^_^