Этого мало. Нужно сказать компилятору, что она может быть неожиданно изменена вне контекста исполнения программы. Скажите всего одно волшебное слово и проблема уйдёт. Какое слово? Гугл в помощь. Переменная используется и в программе, и в обработчике прерывания. Вот по таким словам и ищите. Потому что такие ошибки приводят не к стабильной проблеме, а к непредсказуемому поведению и сработать или не сработать что-то может по 100500 причинам. Когда найдёт в гугле "волшебное слово", там будет и про это подробно написано. Я же тебе всё объяснил "используется в обработчике прерывания, а изменяется вне его. Она сама должна сообщать об этом компилятору?", Трудно поискать как надо сообщать? Или ты сюда поспорить пришёл?
этого недостаточно. Глобальные переменные - это переменные программы, а код в прерывании выполняется как бы "в ином мире", отдельно от программы с ее окружением. Для простоты можешь считать. что код в прерывании вообще не видит никаких переменных - ни локальных, ни глобальных. Переменная должна быть особым образом помечена, чтобы ее можно было менять в прерывании
volatile добавь для исключения оптимизации (если используется оптимизация. А она используется, хоть ты об этом и не догадываешься) переменной. если что-то идет так, как задумано, то это совсем не значит, что оно идет по плану.
)) успел еще до поста исправить Код (C++): #include "TimerOne.h" volatile uint8_t blink_mode = 0; void timerIsr() { static uint8_t blink_loop = 0; if( blink_mode & 1<<(blink_loop&0x07) ){ digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } blink_loop++; } void setup() { pinMode(13,OUTPUT); Timer1.initialize(125000); Timer1.attachInterrupt( timerIsr ); } void loop() { blink_mode = 0B00001111; //Мигание по 0.5 сек delay(5000); blink_mode = 0B00000001; //Короткая вспышка раз в секунду delay(5000); blink_mode = 0B00000101; //Две короткие вспышки раз в секунду delay(5000); blink_mode = 0B00010101; //Три короткие вспышки раз в секунду delay(5000); blink_mode = 0B01010101; //Частые короткие вспышки (4 раза в секунду) delay(5000); } СПАСИБО всем. Все четко!