2011-10-21 5 views
0

atmega2560(STK600ボード)では、8ビットタイマであるTimer0を使用しています。 4msごとにオーバーフローを発生させたいのですが、どうすれば4msのタイマを設定できますか? (クロックスピードは8MHzですが、ダイビング(クロックスピード)/(プリスケーラ)でタイマーを設定していますが、カウンタがリセットされるとオーバーフロー割り込みが発生しますが、4msの設定についてはわかりません。タイマのオーバフローとは、オーバフロー割り込みを発生したら、それを行うには1 second..Howを計算タイマは4msごとにオーバーフローを発生させます。

感謝を事前に

答えて

0

4msのオーバーフロー割り込みを行うことはできません:?!

F_CPU = 8,000,000hz

F_OVERFLOW = 1/0.004s = 250Hzの

CYCLES_PER_OVERFLOW = F_CPU/F_OVERFLOW = 32,000、すなわち:オーバーフローがそれぞれ32,000 CPUクロックサイクル

CYCLES_PER_TIMER_TICK = 32,000/256 = =プリスケーラ値

を行うべき

125はプリスケーラとして使用できませんが、それがあなたの目的(4.096ms)に十分近い場合は128を使用することができます。
そうでない場合は、オーバーフローintの代わりにタイマ比較割り込みを使用することを検討できます。 - またはF_CPUを変更する...

割り込みが4msごとに発生すると、各割り込みでグローバル変数をインクリメントし、変数の値が250に達するたびにもう1秒が経過し、変数を次のように再設定できます0を次の秒にカウントする。

関連する問題