Why are (many) interrupt flags cleared by writing a logical 1?

http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_intbits

  • 1命令で済む
  • read-modify-writeはatomicな操作ではないから、その間に割り込みが入って、フラグが変化する可能性がある。そうすると、今立ったばかりのフラグを誤ってクリアしてしまうことになる(?)

割り込み許可する前にはフラグクリアを忘れずに

タイマとか、裏で動いてすでに条件を満たしてると、許可した瞬間に割り込みが来る