日曜日にPIC18F4525にLEDを接続して動作確認をしました。メインルーチンにdelay_ms関数を使って内部発振が機能していることがわかりました。発振は内部発振8MHz+PLLx4 で32MHzで動作しているはずです。
次にタイマー0の割り込みを確認しようとTimerCalculator v2.5を使って割り込み部分の関数を作り、割り込み時にLEDのビットを反転させてLEDを点滅させてみました。
v20

すると、どうも点滅の周期が想定しているより長かったのです。PLLを使っているのでタイマーへのクロックは8MHzになるのか?と疑いデータシートを見てもそれらしきことは書いてありませんでした。Projectの設定でMCUのクロックは8MHzではなく32MHzと入力するのが正しく、これも間違っていません。1日おいてTimerCalculatorが出力したTMR0L TMR0Hの値とクロックから計算するとタイマーの時間が4倍くらい長い値になっています。

v25

TimerCalculatorの前のバージョンV2.0がPCの中にあったのでp18 20MHz 1msでV2.5 とV2.0を比べてみるとv2.5が出力する値はおかしいことが判明しました。上のキャプチャはV2.0で下のキャプチャはV2.5ですが計算するとV2.5がおかしいことがわかります。

今日の夜にmikroelektronikaのフォーラムを見ると、Timer calculator がおかしいと指摘している投稿がありました。もっと早く気がつけばよかったです。

Tags:

Leave a Reply

This blog is kept spam free by WP-SpamFree.

5 visitors online now
0 guests, 5 bots, 0 members
Max visitors today: 10 at 02:56 pm UTC
This month: 17 at 06-21-2018 05:18 pm UTC
This year: 22 at 01-21-2018 10:47 pm UTC
All time: 133 at 05-04-2015 11:06 pm UTC