V850のユーザーズマニュアルを見ながらタイマー割り込みを使ったLEDチカチカを作ってみました。関係するのは10章 時計タイマー機能と19章 割り込み/例外処理機能です。
0.25秒毎に割り込みがはいるはずですが、メインクロックの分周なので微妙にずれています。fBRG = 5MHz / 19 / 8 = 32894.736842105263157894736842105Hzなので32768Hzと較べると0.3%くらいずれています。WTM = 0x83にすると0.5秒毎に割り込みがはいります。
SETPLL=1;のところをPLLON=0;にするとPLLがoffになるのでCPUは5MHzで動作します。
ただし点滅速度はかわりません。
__nop();を__halt();に変えてもLEDは点滅します。
WTM7 = 0にする(WTM = 0x07にする)と、サブクロックをを使用するはずですが、なぜかうまくいきません。何か初期設定とかいるのかな?
ATラボさんのキットはKDS4Lという水晶発振子でしたが、手元にあったKDS7Aをつけたのがいけなかったかもしれません
0.25秒毎に割り込みがはいるはずですが、メインクロックの分周なので微妙にずれています。fBRG = 5MHz / 19 / 8 = 32894.736842105263157894736842105Hzなので32768Hzと較べると0.3%くらいずれています。WTM = 0x83にすると0.5秒毎に割り込みがはいります。
SETPLL=1;のところをPLLON=0;にするとPLLがoffになるのでCPUは5MHzで動作します。
ただし点滅速度はかわりません。
__nop();を__halt();に変えてもLEDは点滅します。
WTM7 = 0にする(WTM = 0x07にする)と、サブクロックをを使用するはずですが、なぜかうまくいきません。何か初期設定とかいるのかな?
ATラボさんのキットはKDS4Lという水晶発振子でしたが、手元にあったKDS7Aをつけたのがいけなかったかもしれません
#pragma ioreg void main( void ) { // CPU初期化 VSWC = 1; WDTM2 = 0; __asm("mov 0x00, r11"); __asm("st.b r11, PRCMD"); __asm("st.b r11, PCC"); while(LOCK) ; SELPLL = 1; // PLL on → 20MHz // LEDポート 初期化 PMCT.6 = 0; // 0で点灯, 1で消灯 // タイマー設定 PRSCM0 = 19; // プリスケーラでfBRG = 32894Hzにする PRSM0 = 0x12; // {WTM7,WTM3,WTM2} = 101 ... fBRG使用 0.25s毎に割り込み WTM = 0x87; // 割り込み許可 WTIC = 0; __EI(); // 点滅 while(1) __nop(); } #pragma interrupt INTWT handler __interrupt void handler(void) { PCT.6 ^= 1; }
タイマースタートさせるだけコーディングを1行追加するだけで動きませんか?
V850アプリレットプログラムをインストールすると例のWindowsXPのセキュリティー自動更新を繰り返すのかもしれませんが。
セキュリティの自動更新という現象にはなっていないような気がします。気のせい?
http://goda.blog3.fc2.com/blog-entry-812.htmlで問題出るかもしれないと書きました。下記のバージョン(より新しい?)ならば問題が出ないと思います。すみませんが、結果をコメント記載されていただくと助かります。
WindowsXP(SP2)の場合は
ファイル名 バージョン 日付 時刻 サイズ
Msxml4.dll 4.20.9841.0 2006/11/4 14:18 1,245,696
それとアプリレットは次号で記事になるんですね。