1

TCNT0 内に入力する値を計算する必要があるときはいつでも、このように計算する必要があると書かれているタイマーの章でプログラムが与えられたその本で avr タイマー (Mazidi) を勉強していました。たとえば、8Mhz、256 プリスカラー、1 秒の遅延

     8 Mhz = .125 usec 
     256 x 0.125 = 32 usec
     for 1 ms delay 
     1sec / 32usec = 31250 clock cycles = 0x7A12
     so the value for TCNT0 is 
     1+FFFF-7A12 = 0x8255 //what this step means

また、ポーリング時に TIFR の 0 番目のビットで 1 を探します。1 になると、タイマーを停止してクロック ソースを停止しますが、なぜこれを行うのか

     TIFR = 0x1 //clears TIFR??

それが書かれた本では、それは TIFR をクリアします。そのビットがすでに 1 である場合、これはどのように可能であり、1 を書き込むと明らかになりますか?

4

1 に答える 1

0
1+FFFF-7A12 = 0x8255 //what this step means

これはタイマーを使用する通常の方法ではありませんが、タイマーが 0 に達すると「カウントダウン」してトリップするように、0 (0xFFFF + 1 に相当) から数値を減算します。

代わりに、TOC(タイマー出力比較)の方がはるかに理にかなっています。

TIFR = 0x1 //clears TIFR??

はい。このレジスタはメモリ ロケーションではありません。メモリ位置にマップされます。一部のレジスタはこのように機能します。

于 2013-09-30T17:23:24.143 に答える