Код
TN_INTSAVE_DATA
tn_disable_interrupt();
...
{
// Вложенная
TN_INTSAVE_DATA
tn_disable_interrupt();
...
tn_enable_interrupt();
}
...
tn_enable_interrupt();
Всё потому что
Код
#define TN_INTSAVE_DATA_INT unsigned int tn_save_status_reg = 0;
#define TN_INTSAVE_DATA unsigned int tn_save_status_reg = 0;
#define tn_disable_interrupt() tn_save_status_reg = tn_cpu_save_sr()
#define tn_enable_interrupt() tn_cpu_restore_sr(tn_save_status_reg)
#define tn_idisable_interrupt() tn_save_status_reg = tn_icpu_save_sr()
#define tn_ienable_interrupt() tn_icpu_restore_sr(tn_save_status_reg)
tn_cpu_save_sr() - запрещает прерывания и возвращает статус разрешения прерываний до запрещения
tn_cpu_restore_sr() - разрешает прерывания если параметр != 0 и запрещает, если == 0