Помогите, пожалуйста, разобраться с проблемой. Необходимо использовать переменную, которая может быть изменена как по ходу программы, так и в прерывании. Думаю, многие уже воскликнули: просто он забыл объявить её как volatile, вот и мучается. Нет, не забыл, но почему-то всё происходит, как будто контроллер не замечает её изменения.
Я думаю, должно быть так: сначала «b» пока нет прирывания, потом один раз «а» и опять «b» пока опять не будет прерывание. А получается сначала «b», после прерывания «а» «b». Думаю, я что-то напутал.
Код
#define WORK 1
#define SEND 2
volatile char answer = WORK;
int main ()
{
sei();
while (1)
{
printf("b\n");
if(answer == SEND)
{
printf("a\n");
answer = WORK;
}
};
return 0;
}
ISR(USART_RXC_vect)
{
answer = SEND;
}
#define SEND 2
volatile char answer = WORK;
int main ()
{
sei();
while (1)
{
printf("b\n");
if(answer == SEND)
{
printf("a\n");
answer = WORK;
}
};
return 0;
}
ISR(USART_RXC_vect)
{
answer = SEND;
}