0

HCS12の命令サイクル数と遅延サイクル数を計算してみました。HCS12についての情報があります

HCS12 はバスクロック (E クロック) をタイミング基準として使用します。

  • E クロックの周波数は、オンボード クロック発振器 (クロック、48 MHz、E-クロック、24 MHz) の半分です。
  • 命令の実行時間も E クロック サイクルで測定されます。

  • 24Mhzはクリスタル周波数なのかな?その場合、CPU の命令時間には水晶振動子の発振周波数の半分しか使用されません。では、半分にするべきでしょうか?

  • バス クロックが 24 MHz のデモ ボードで 100 ミリ秒の時間遅延を作成するにはどうすればよいですか?

100 ミリ秒の時間遅延を作成するには、前の命令シーケンスを 60,000 回繰り返す必要があります [100 ミリ秒 ÷ (40 ÷ 24,000,000) μs = 60,000]。次の命令シーケンスは、必要な遅延を作成します:例はありますが、値の計算方法60000と値が わかりません。40

           ldx #60000       
loop       psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           nop               ; 2 E cycles
           nop               ; 3 E cycles
           dbne x,loop
4

1 に答える 1

1

最初のセクションでは、内部発振器 (または外部水晶) が 48 MHz の場合、EClock は 24 MHz であると説明しています。したがって、100 ミリ秒遅らせたい場合、それは 24,000,000 * 100 / 1,000 EClocks、つまり 2,400,000 命令サイクルです。

使用可能な最大レジスタ サイズは 16 ビットであるため、<= 65535 のループ カウンタ値が選択されます。

便利なことに、60,000 は 2,400,000 の因数であり、60,000 * 40 です。したがって、内側のループは 40 サイクルかかるように工夫されています。ただし、最後の 3 行のタイミング コメントは正しくありません。

nop               ; 1 E cycle
nop               ; 1 E cycle
dbne x,loop       ; 3 E cycles

必要な 40 サイクルの実行時間を与えます。

割り込みやその他のプロセスがある場合、このハードコードされた方法はあまり正確ではなく、タイマー割り込みの方が適していることに注意してください。

于 2016-03-22T12:32:49.753 に答える