SSブログ

ColdFire V1 のクロック設定 - オーバークロックへの道 [ColdFire (ColdeFire) V1]このエントリーを含むはてなブックマーク#

デバッガから周波数を変更する

空プロジェクトをDEMOQE128に書き込んで、周波数を確認しました。 周波数を測定する装置は使いません。 Multilinkが測定して、デバッガのCommandウィンドウに報告してくれます。

デフォルト状態では、内部参照クロックが31.25kHzに設定されて、 FLLが512倍のクロックを生成するので、DCOの周波数は16MHzになります。 これをBDIVで2分周した8MHzのクロックがCPUに入ります。 バスクロックは、この半分の4MHzになります。 デバッガ画面には、 "~4005157hz"と表示されました。

この状態で、デバッガからICSC2($FFFF8039)の値を$40から$00に変更すると、 BDIV=00(1/1分周)となって、デバッガ画面に"~8002027hz"と表示されます。 ところが、それっきりBDMの接続が切れてしまいました。

同様にデバッガからICSSC($FFFF803B)の値を$11から$B1に変更すると、 DRS=10, DMX32=1 (1824倍FLL; 理論的には DCO=57MHz)となって、 デバッガ画面に"~14272350hz"と表示されます。 が、やはりBDMが切れてしまいました。

プログラムでクロック設定を切り替える

それではと、プログラムでこれらのレジスタを変更してみました。

// Configure ICS
ICSC2_BDIV = 0; // BDIV 1/1
ICSSC_DRST_DRS = 2; // FLL x1536

このプログラムを書き込んで、デバッガから実行したところ、デバッガ画面には、 "~24056572hz"と表示され、BDMとの通信も切れません。

ところが、この状態からデバッガのResetとStartボタンを押して、 再実行させても周波数が変更されたという表示が出てきません。 "STEP OVER"でソースコードをステップ実行させると"~23906250hz"と表示が出てきて、 周波数が変わったらしいことがわかります。

何が悪いんだか、わかんないな。"CodeWarrior V6.0"でやっているせいもあるのかな? HCS08では、こんなにBDM通信が切れちゃうことはなかったんだけどな。

良い子はマネしてはいけない、オーバークロックの実験

仕様書に記述のある最大バスクロック周波数は、25.165MHzなのですが、 ICSの設定だけでそれ以上の周波数が出るらしいことがわかります。 そこで、実際に30MHz動作を実感してみました。

先の24MHzを出していたプログラムをそのまま使います。 そして、プログラムを書き込むときに内部参照クロックの周波数を39.06kHzに変更します。 やることは、これだけです。 これで、DCO出力は、39.60kHz*1536=60.0MHzとなります。

デバッガ画面でも "~30118050hz"の表示が出ています。 つまり、DEMOQE128に搭載されたMultilinkも、 しっかり追従してきているということです。 メモリダンプ画面も変更されている様子が見られるので、通信もできているのでしょう。

当のMCF51QE128ですが、多少暖かくなった程度で、 裏側のMC9S12UF32の方がよっぽど暖かくなっています。 まあ、実験レベルでは動くんじゃないかな?

あくまでも、自己責任で。


nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。