Arduino(Avr)に、このコードで使用されている変数にも作用する割り込みによって中断されることなく実行したいコードがあります。コードの実行中にその割り込みが失われることは望ましくありません。むしろ、割り込みを少し延期してもらいたいです。すべての割り込みではなく、この1つの割り込みのみを延期したいと思います。
現在、その割り込みマスクをクリアし、コードの終了後に再度設定しています。これは稼働していますか?コードは次のようになります。
その割り込み(この場合は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
とbuffer
Timer1にも設定されているため、このコードのバッファの読み取りと設定の途中で割り込みが実行されると競合が発生しsomething_on_buffer
ます。そのため、この数行のコードでTimer1の割り込みを延期したいと思います。念のために。これを行う方法?これは正しい方法ですか?