質問: 発生した割り込みの数をどのように数えることができますか? 私は33ミリ秒ごとにオフになるタイマー割り込みをプログラムしようとしています。私は20MHzのクロックを持っているATtiny85でこれをやっています。私が設定できるプリスケーラの最大値は32なので、1回の割り込みが可能な限り最長の時間は408マイクロ秒です。 33ミリ秒に達する私の計画は、割り込みを81回実行するだけで、33ミリ秒の目標を得ることができます。しかし、割り込みが何回起こったのかを実際にどのように数えることができるかという手掛かりはありません。誰でもここでそれを行う方法を知っているか、何がうまくいくのかについて何か考えがありますか?
回答: はい、ISRステートメントの中に小切手を入れてください。 ``` ISR(TIMER0_OVF_vect) { static uint8_t postscale = 0; if (++postscale == 81) { postscale = 0; do_stuff(); } else { go_to_sleep(); } } ``` 割込みが終わったら、いつでもISRメソッドに入る必要があります。そのif文を追加して、静的変数を使用して(その値を保持するようにして)、正しい数のループを作成したかどうかを確認してください。