我在 Arduino (Avr) 中有一段代码,我想在不被中断中断的情况下执行它,该中断也对这段代码中使用的变量进行操作。我不希望在执行代码时丢失该中断;相反,我想让中断被推迟一小段时间。我只想推迟这一次中断,而不是所有中断。
现在我正在清除该中断掩码并在代码完成后再次设置它。这管用吗?这是代码的样子:
我不想被那个中断打断的一段代码(在这种情况下是 timer1 溢出中断):
TIMSK1 = 0; //Set Timer1 Mask off. Just postponed ???? I hope so.
int c = buffer[reading_pointer];
reading_pointer = (reading_pointer + 1)%SIZE_OF_BUFFER;
something_on_buffer = false;
//buffer and something_on_buffer are set on Timer1 interrupt.
TIMSK1 |= (1 << TOIE1); //Enable timer1 again.
something_on_buffer
并且也设置在 Timer1 上,如果在读取缓冲区和设置这段代码buffer
的中间执行中断会发生冲突,这就是我想为这几行代码推迟 Timer1 中断的原因。something_on_buffer
只是要确定。这个怎么做?这是正确的方法吗?