ウインドウズのアクセサリに入っている電卓を使用しています。
2010年11月24日水曜日
2010年11月12日金曜日
2010年11月11日木曜日
TMR0
概要:短い期間でのインターバルタイマーなどに利用できる。
タイマー0は8ビットのタイマーカウンタ で、
1命令サイクル毎に+1されます。(プリスケーラで変更できます)
最初に設定した値からカウントアップが始まります。
最大256のプリスケーラを併用すると65,535までのクロックをカウントすることができる
プリスケーラとは、カウント周波数を遅くする回路のこと。
クロックは外部入力と内部発生を選択することができる
TMR0(タイマーカウンタ)のカウント値がFFH(255)から00Hに戻る(オーバフロー)時TMR0割込みが発生する。
基本的にはアップカウンタ
カウント開始からFFHを過ぎて割り込みが発生するまでのインターバル時間を調整するために、
TMR0に初期値を書き込む操作を行ないます。
TMR0の初期値とプリスケーラ値の設定によって割り込み発生までに必要なカウント値が決まります。
タイマーカウンタTMR0はSFR(スペシャルファンクションレジスタ)として読み書きが可能で、プリスケーラ値やクロックの外部/内部の選択、および外部クロック時の立上り/立下りタイミングの設定などの、TMR0の動作設定はOPTIONレジスタによって行ないます。
内部クロック
周期 = 1/システムクロック周波数 x 4
システムクロックが20MHzの場合は、1/20MHz x 4 = 0.2μSということになります。
TMR0のカウントアップ周期 = 内部クロック周期 x プリスケーラ設定値
実際のタイマーカウンタTMR0は、
プリスケーラを経由した後のクロック周期でカウントアップされます。
プリスケーラは1:2~1:256の8段階から選択できますので、
上記の通りシステム クロックが20MHzの場合、
プリスケーラが1:2の時は0.4μS、
1:256の時は51.2μSのカウントアップ周期となります。
システムクロックが20MHzの場合、TMR0を使ったタイマー動作では、51.2μS x 255カウント = 13.056mS が計測できる最長時間ということになります。
TMR0に200がセットされていると、56命令サイクル(255-200+1)でTMR0割込みが発生します。
クロックとして20MHzを使用していますので、1命令サイクルは0.2μSです。
プリスケーラが1:2の時は0.4μS
22.4μS(0.4μS×56サイクル)でTMR0割込みが発生します。
16ビットタイマーの場合
8ビットタイマーは256カウントが限界でした。
16ビットタイマーは256x256で65,536カウントが限界になります。
タイマー0は8ビットのタイマーカウンタ で、
1命令サイクル毎に+1されます。(プリスケーラで変更できます)
最初に設定した値からカウントアップが始まります。
最大256のプリスケーラを併用すると65,535までのクロックをカウントすることができる
プリスケーラとは、カウント周波数を遅くする回路のこと。
クロックは外部入力と内部発生を選択することができる
TMR0(タイマーカウンタ)のカウント値がFFH(255)から00Hに戻る(オーバフロー)時TMR0割込みが発生する。
基本的にはアップカウンタ
カウント開始からFFHを過ぎて割り込みが発生するまでのインターバル時間を調整するために、
TMR0に初期値を書き込む操作を行ないます。
TMR0の初期値とプリスケーラ値の設定によって割り込み発生までに必要なカウント値が決まります。
タイマーカウンタTMR0はSFR(スペシャルファンクションレジスタ)として読み書きが可能で、プリスケーラ値やクロックの外部/内部の選択、および外部クロック時の立上り/立下りタイミングの設定などの、TMR0の動作設定はOPTIONレジスタによって行ないます。
内部クロック
周期 = 1/システムクロック周波数 x 4
システムクロックが20MHzの場合は、1/20MHz x 4 = 0.2μSということになります。
TMR0のカウントアップ周期 = 内部クロック周期 x プリスケーラ設定値
実際のタイマーカウンタTMR0は、
プリスケーラを経由した後のクロック周期でカウントアップされます。
プリスケーラは1:2~1:256の8段階から選択できますので、
上記の通りシステム クロックが20MHzの場合、
プリスケーラが1:2の時は0.4μS、
1:256の時は51.2μSのカウントアップ周期となります。
システムクロックが20MHzの場合、TMR0を使ったタイマー動作では、51.2μS x 255カウント = 13.056mS が計測できる最長時間ということになります。
TMR0に200がセットされていると、56命令サイクル(255-200+1)でTMR0割込みが発生します。
クロックとして20MHzを使用していますので、1命令サイクルは0.2μSです。
プリスケーラが1:2の時は0.4μS
22.4μS(0.4μS×56サイクル)でTMR0割込みが発生します。
16ビットタイマーの場合
8ビットタイマーは256カウントが限界でした。
16ビットタイマーは256x256で65,536カウントが限界になります。
クロックとサイクル
クロックは、OSC1,OSC2ピンに接続する発振子の周波数により決定されます。
10MHzの発振子を使用している場合、
1秒当たりのクロック数は、
10MHz = 10,000,000 = 0.1μS(マイクロ秒)
となり、
1クロックの時間は
1秒/10,000,000 = 0.0000001秒 = 0.1μS(マイクロ秒)
となります。
(参考)
ミリ(m)は10の−3乗
マイクロ(μ)は10の−6乗
ナノ (n)は10の−9乗
PICマイコンには、35個の命令があります。
全ての命令は4クロックで実行されます。
4クロックを1サイクルと呼びます。
1つの命令は、4クロック(1サイクル)で実行されますので、
1命令は、 0.4μS 必要です。
(参考)
必要な待ち時間などを設定する場合の計算
0.5秒の待ち時間を設定したい場合に必要なサイクルは、
0.5S/0.4μS = 1,250,000命令(サイクル) となります。
10MHzの発振子を使用している場合、
1秒当たりのクロック数は、
10MHz = 10,000,000 = 0.1μS(マイクロ秒)
となり、
1クロックの時間は
1秒/10,000,000 = 0.0000001秒 = 0.1μS(マイクロ秒)
となります。
(参考)
ミリ(m)は10の−3乗
マイクロ(μ)は10の−6乗
ナノ (n)は10の−9乗
PICマイコンには、35個の命令があります。
全ての命令は4クロックで実行されます。
4クロックを1サイクルと呼びます。
1つの命令は、4クロック(1サイクル)で実行されますので、
1命令は、 0.4μS 必要です。
(参考)
必要な待ち時間などを設定する場合の計算
0.5秒の待ち時間を設定したい場合に必要なサイクルは、
0.5S/0.4μS = 1,250,000命令(サイクル) となります。
2010年11月1日月曜日
Vistaでハイパーターミナルを使う
Vista にはハイパーターミナルは入っていませんが、
XP をもっていれば移植可能という事で試してみました、
C:\Program Files\Windows NT/hypertrm.exe
C:\WINDOWS\system32/hypertrm.dll
の二つのファイルをVista の同じフォルダにコピーするだけです。
XP をもっていれば移植可能という事で試してみました、
C:\Program Files\Windows NT/hypertrm.exe
C:\WINDOWS\system32/hypertrm.dll
の二つのファイルをVista の同じフォルダにコピーするだけです。
登録:
投稿 (Atom)
