Arduino Timer Interruptで助けてください。ピンコントロールのないArduinoタイマー割り込み
私のカスタム機能を開始するためにピン制御なしでタイマOCR0AまたはOCR2Aを起動するにはoutput1Display()
? 1msの間隔。
ATmega328P、8MHz水晶。
Arduino Timer Interruptで助けてください。ピンコントロールのないArduinoタイマー割り込み
私のカスタム機能を開始するためにピン制御なしでタイマOCR0AまたはOCR2Aを起動するにはoutput1Display()
? 1msの間隔。
ATmega328P、8MHz水晶。
まず、タイマー設定の詳細をカバーする328Pのデータシートを検索してダウンロードする必要があります。 Timer0はおそらく混乱したくない他のものに使われているので、Timer2だけを使うことをお勧めします。
開始時にデータシートが混乱する可能性があるので、必要なものを次に示します。まず、クロックスケーラを選択する必要があります。 Timer2はメインクロックを直接カウントするか、低速の場合は8,32,64,128,256または1024で割ることができます。 Timer2は8ビットのカウンタを使用しているので、(255の負荷で)最も遅いのはプリスケーラ付きクロックの256ティックです。 8MHzのクロックがあり、タイマーの間隔を1ミリ秒にしたい場合は、プリスケーラを1/32に設定して250000Hzのカウンタクロックを得てから、OCR2Aに249をロードして、1000Hzの割り込みで250を除算しますレート。
TCCR2A = 2; // Set CTC mode. Same as TCCR2A = _BV(WGM21);
TCCR2B = 3; // Prescaler to divide by 32 (CS21 and CS20 only)
TCNT2 = 0; // Clear the counter
OCR2A = 249; // Set for 1 msec rate
TIMSK2 = 2; // Set OCIE2A to begin counting with Compare A
あなたの割り込みハンドラは、セットアップ後とループの前に現れるはずである、このように宣言されています:タイマーがあなたのメインループに設定することができることを
ISR(TIMER2_COMPA_vect)
{
// Your code goes here
}
注セットアップコードは次のようになります他の必要なデータがあるまで割り込みを開始したくない場合など、必要に応じてシリアルからコマンドを実行します。または、最終的なTIMSK2 = 2を除き、すべての設定をそのままにすることができます。あなたのシリアルコマンドで与えることができます
どうすればよい質問ができますか? https://stackoverflow.com/help/how-to-ask – dda
最小限で完全で検証可能な例の作成方法https://stackoverflow.com/help/mcve – dda