Sim's blog

電子工作はじめてみました

タイマー割り込みでLED点滅

2007-04-09 02:51:49 | V850
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をつけたのがいけなかったかもしれません

#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;
}


最新の画像もっと見る

5 コメント

コメント日が  古い順  |   新しい順
アプリレットでは? (ごだ)
2007-04-09 09:07:56
LED点滅だとアプリレットを使いPWM機能を動かすと簡単だと思いますけどいかがでしょうか?
タイマースタートさせるだけコーディングを1行追加するだけで動きませんか?

V850アプリレットプログラムをインストールすると例のWindowsXPのセキュリティー自動更新を繰り返すのかもしれませんが。
返信する
Unknown (Sim)
2007-04-10 01:34:58
アプリレットを使うという手があるんですね。今回の付録CD-ROMでは一緒にインストールされていました。ヘルプファイルとかながめて調べてみます。情報ありがとうございました。

セキュリティの自動更新という現象にはなっていないような気がします。気のせい?
返信する
Unknown (ごだ)
2007-04-10 10:28:35
良かった良かった。
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

それとアプリレットは次号で記事になるんですね。
返信する
Unknown (Sim)
2007-04-10 22:31:01
ファイルは同一のものでした。コメントを書いておきました。

返信する
ブザー (uuuuu)
2007-05-07 11:22:45
2種類のスイッチで入力し、タイマ割り込みでブザーを鳴らす
返信する

コメントを投稿