goo blog サービス終了のお知らせ 

Sim's blog

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

秋葉で買ってきた液晶

2007-04-28 21:09:21 | V850
ゴールデンウィークも初日、さっそく秋葉原に遊びに行ってきました。いつものごとく衝動買いの連続で気づいたら液晶を3つ買っていました。一応、V850につながるかもしれないということで。

左上は鈴商さんで売っていた384x192液晶ディスプレイです(1260円)。結構古そうな感じです。18pinの1.27mmフレキケーブルで接続するようですが、コネクタが別売りであったので一緒に買ってきました(50円)。資料は信号名くらいしか分からないです。動かせない可能性大です。セグメントドライバを5つ、コモンドライバを3つも使っているらしいです。

左下は秋月で売っていたキャラクタディスプレイで、20x4文字でるものです(1500円)。こちらは普段使っている液晶とそんなに変わらないはずです。資料には動作電圧のこととかが細かく書いてないので、もしかすると5V onlyかもしれません。

右はラジオデパートのATラボさんで売っていたもので、84x48ドットのグラフィックLCDです(3000円)。手作りなので15セット限定で販売されていました。たぶん4つ目を買ったので残りは11個のはずです。ついてきた資料には「インタフェース付録V850ES基板用グラフィックLCD表示ボード」となっています。V850付録基板のCN3(JTAG用?)に直接させるようになっています。制御方法はSPIです。パスカルさん液晶もSPIでした。

今日は風も強く雨まで降っていました。というか、電車の中で秋葉に近づくにつれて空が暗くなってきて駅におりたとたん雷がドドーン。駅から出たとたんにザーっと雨が降ってきました。帰ろうとしたら雨やんでるし・・・。はい、今日の秋葉原はツンデレでした。

5/1 追記 ATラボさん液晶のサイズを84x48に修正
5/3 追記 ATラボさんのサンプルプログラムがほしい方はUSBメモリーを持参くださいとのことです

赤外線リモコンを試してみました

2007-04-27 23:38:48 | V850
6月号のInterfaceは5月号付録のV850基板の色々な製作事例が載っています。
部品が一番少なくって手持ちの部品でまにあう第3章の赤外線学習リモコン(p.80-92)を試してみました。

R1は誌面では33Ωですが、すぐ見つかったので22Ωにしています。赤外線LEDは千石電商で買ったTLN105B(F)です(40円)。データシートはここです。誌面では秋月電子で売っているOSIR5113Aを使っています。秋月ではばら売りしていなくて100個単位でしか売っていません(700円)。TLN105B(F)の最大定格は100mAですが、パルス駆動したときは最大1A(!)まで流せるようです。といってもトランジスタが2SC1815だとそんなに流せないはずです。Q-Steerのリモコンには5Ωがついてました。

組み立てはいつものようにブレッドボードです。

うーん、とりあえず動いたけど学習させるのが難しい。慣れというかコツをつかめるまでは失敗の連続でした。

デフォルトのhexファイルは28kバイト以上あるのでFPLを使うときは、最初のブロックだけでなく次のブロックにも書き込まなければいけません

著者の森岡澄夫さんのホームページです。Design Waveでよく見かける名前です。NECの方だったんですね。

赤外線受光素子のPL-IRM0101も秋月電子で売っているものです(110円)。ところで多少問題があります。買うと一緒に入っているデータシートではVccの最大定格が4.5~5.5Vになっているのですが、誌面では3.3Vで動かすことになっています。一応動いているようですが規格外での動作ということを注意しておく必要があると思います。V850は5V耐圧のピンがあるので、5V耐圧のピンにつなぐようにする方が安全です。
ちなみに付録基板は38pinが5Vです。5月号の表4ではV+とか書いてありますがこれは間違いです。

このプログラムを改造すれば、2章に載っているようなコントローラの改造をしなくても、原理的にはQ-Steerのコントローラが作れるはずです。hamayanさんmasatoさんはMSP430でQ-Steerの制御をしています。MSP-430のタイマーはCPUに負荷をかけないで勝手にパルスを出す機能があるので38kHzのキャリアを作るのが便利でした。このプログラムではタイマー割り込みでキャリア信号を作っているようです。

部品は33Ωの抵抗以外は秋月電子でそろえることができます。

通販コードI-656 赤外線LED 5mm (100個入) [OSIR5113A] 700円
通販コードI-622 赤外線リモコン受信モジュール(38kHz)シールド付 [PL-IRM0101-3] 110円
通販コードI-881 トランジスタ 2SC1815GR(20個入) [2SC1815GR] 100円
通販コードR-16102 カーボン抵抗(炭素皮膜抵抗) 1/6W 1KΩ (100本入) [RD16S 1K] 100円

赤外線LEDはこれしかありませんが赤外線センサーは他にもいくつか種類があります。
33Ωに近い値だと47Ωがあります

通販コードR-16470 カーボン抵抗(炭素皮膜抵抗) 1/6W 47Ω (100本入) [RD16S 47E] 100円

10Ωでもいいかもしれません

通販コードR-16100 カーボン抵抗(炭素皮膜抵抗) 1/6W 10Ω (100本入) [RD16S 10E] 100円

千石電商さんマルツパーツさんでも赤外線LEDは扱っていますが赤外線センサーはないようです。鈴商さんはお店では売っているのですが通販はないようです。

スイッチ付USBハブ

2007-04-27 01:17:15 | V850
ヨドバシカメラで何気にUSBハブをながめていたら、スイッチ付のがあったので衝動買いしてしまいました。メーカーはELECOMで型番はU2H-TAP34200SWHです。USB給電のマイコンボードにはちょうどよいのではないかと思いました。アマゾンでも買えます。

Interface 2007/6月号 エレキジャックNo.2

2007-04-26 08:22:21 | V850
とりあえず買ってきました。飲み会があったので、まだちゃんと見てません。

Interfaceは「V850マイコンで作る!遊ぶ!学ぶ!」で先月号の続きになります。目次にはQステアの写真が出てます。コントローラにはんだづけして制御するみたいです。Qステア自体はアマゾンでも買えます。私は川崎のヨドバシカメラで買いました。\1020だったのでちょっとお得でした。
次号予告には、別冊付録V850マイコン活用ハンドブックと書いてありました。

エレキジャックは、テレビゲームの記事は原理の話とかがなくて多少不満です。元々がトラ技の1997年5月号らしいので、そこには書いてあったのかもしれません。

トラ技の2007年8月号(7/10発売)の付録はdsPICマイコンボードらしいです。エレキジャックp.132に写真がでています。「PC直結、電源ONで書き込みOK」って書いてあります。この5本足のコネクターは何なんだろう。たぶんUSBだろうけど5本ってことはミニかな。

Design Wave Magazineの7月号(6/9発売)にも付属基板がついてくるらしいので、当分遊べそうです。

すんさんとGO2さんのSDカード実験

2007-04-25 00:04:45 | V850
すんさんの趣味の電子工作の部屋 by すんではInterface付録のV850ボードでSDカードを読み書きする実験をしています。Chanさんが開発されたFatFsというファイルシステムを利用されているようです。

GO2さんもV850でSDカードの読み書きに成功されているようです。

そういえばトラ技の2007/2を見て、秋月で買ったSDカードスロット、ほこりをかぶってます。

オンチップデバッグを動かすための変更点

2007-04-17 22:40:49 | V850
jsskさん調査によれば、appliletでシステムの「オンチップディバグ設定」タブのオンチップディバグ設定を「使用する」に変更することで、デバッガが使えるコードを生成することができます。この変更を行わないと「F0c34: オンチップ・デバッグで使用する予約領域への書き込みはできません。(address 0000)」というエラーが出てデバッガを動かすことができません。

appliletを使えば、デバッガの動くコードと動かないコードが作れるので、違いを調べてみました。方法は、オンチップデバッガ設定を「使用する」と「使用しない」の2種類の設定で生成されたコードの差分を取りました。フォルダーの名前が違うと差分が多くなるので、最初に作ったフォルダーは生成した後で別名に変えて、2番目に作るフォルダーは最初に作ったフォルダーと同じ名前にしました。

先に結論を言うと変更点はけっこう多いのでappliletでスケルトンを作る方がよっぽど楽です。さらに追い討ちをかけるように、実はオンチップデバッガを動かすための情報はユーザーズ・マニュアルの27章に全て書いてありました(先にマニュアル調べればよかった><)。

とりあえず、差分を載せておきます。

(1) オンチップデバッグモードを有効にする(crte.s)
        mov      0, r11                 -- normal mode
        st.b    r11, PRCMD[r0]
        st.b    r11, OCDM[r0]


(2) security id(system.s)
        .section "SECURITY_ID", text
        .byte CG_SECURITY0              -- Security ID head
        .byte CG_SECURITY1
        .byte CG_SECURITY2
        .byte CG_SECURITY3
        .byte CG_SECURITY4
        .byte CG_SECURITY5
        .byte CG_SECURITY6
        .byte CG_SECURITY7
        .byte CG_SECURITY8
        .byte CG_SECURITY9              -- Security ID tail


(3) ROMの予約領域とRAMの予約領域を確保する(inttab.s)
-- Secures 2 KB space for monitor ROM section
	.section "MonitorROM", const
	.space 0x800, 0xff
-- Secures 12 byte space for monitor RAM section
	.section "MonitorRAM", bss
	.lcomm monitorramsym, 12, 4 	-- defines monitorramsym symbol


(4) デバッグ用の割り込みベクター(inttab.s)
	.section "DBG0"			-- Secures DBG0 interrupt vector for debugging
	.space 4, 0xff


(5) デバッグで使うUART0の割り込みベクター(inttab.s)
	.section "INTUA0R", text	-- Secures interrupt vector for serial communication	
	.space 4, 0xff
	
	.section "INTUA0T", text	-- Secures interrupt vector for serial communication	
	.space 4, 0xff


(6) デバッグで使うUART0を有効にする(port.c)
        PMC3 |= 0x03;


(7) リンク用ファイルへの追加(850.dir)
MROMSEG : !LOAD ?R V0x03f800 {
	MonitorROM = $PROGBITS ?A MonitorROM;
};

MRAMSEG : !LOAD ?RW V0x03ffeff4{
	MonitorRAM = $NOBITS ?AW MonitorRAM;
};


詳しくはユーザーズ・マニュアルの27.2 DCUを使用しない方法をご覧ください。ROMを2kバイト、RAMを16バイト、デバッグ用にとられてしまうようです。

4/18 追記 jsskさんに差分の抜けを教えていただきました。

(8)security id定義(system.inc)

.set CG_SECURITY0, 0xff
.set CG_SECURITY1, 0xff
.set CG_SECURITY2, 0xff
.set CG_SECURITY3, 0xff
.set CG_SECURITY4, 0xff
.set CG_SECURITY5, 0xff
.set CG_SECURITY6, 0xff
.set CG_SECURITY7, 0xff
.set CG_SECURITY8, 0xff
.set CG_SECURITY9, 0xff

(提供 jsskさん)

セキュリティIDについてはユーザーズ・マニュアルの27.3 ROMセキュリティ機能に載っています。system.incというのはアセンブラのincludeファイルです。

ATラボさんで聞いてみました

2007-04-15 20:51:05 | V850
東京ラジオデパートのATラボさんでお話を伺ってみました。
- R6をはずすのが正解。負荷がそっちになってしまう。Interfaceに載っていると思っていた。
- 水晶発振子はキンセキのがいい
- TCP/IPのプロトコルスタックを移植中
- デバッガが動かなくなることが多い。例のF0c34。微妙にプログラムの順番を変えたりすると直ることがある。

というわけで、R6をはずさないと発振しないということで正解みたいです。あまりにも当たり前なのでInterfaceに載っていないのが不思議といった感じでした。

聞くのを忘れましたが500円のキットは店頭では見かけなかったので売り切れているかもしれません。

色々楽しくお話させていただきました。店長さん、ありがとうございました。

R6をはずしたらサブクロックが動きました

2007-04-14 22:52:55 | V850
R6をはずせばサブクロックが発振することをmasatoさんに教えていただきました。さっそくはずしてみると、しっかり発振してます。写真はR6をはずした後の付録基板です。

元々はChanさんが書かれていたということなので、探してみました(ChanさんのHP)。わー、V850でMP3プレイヤー作ってるー(「雑誌付録基板の試食(1)」)。他のコンテンツもなんかすごすぎです。

ちなみにmasatoさんのwikiはこちらです。MSP430や色々なマイコンのノウハウがいっぱいです。

サブクロックが動いた?

2007-04-12 23:39:48 | V850
なんか、すごくいんちきっぽいんですが、偶然サブクロックが動きました。

電源をいれた後、写真のようにR6の片方にテスターの先をしばらく(5秒くらい?)押し付けておきます。運がよければ、しばらくするとゆっくり動きはじめるようなので、後はテスターをはずします。

動作確認にはappliletで作ったサブクロックタイマー割り込みLEDチカチカを使っているので、動いているかどうかは目で見て確認できます。

このR6はp.83 図7の右の方にのっているもので、XT1を開放しないためにR6で接地していると本文には書いてあります。テスターを押し当てているのは図7で15と書いてあるXT1に接続している方になります。GNDに接続している方(R6の右側)にテスターをあてていても、発振しだしたことはまだありません。

上をして動作した水晶発振子は以下です。
- シチズンのCFS-308です(シチズンの水晶デバイスのページ)。千石電商で購入
- KDS4Lという刻印のある水晶発振子。ATラボさんのキット
- S1Z3という刻印のある水晶発振子。秋月電子で購入
- KDS7Aという刻印のある水晶発振子。鈴商で購入
- S3Zという刻印のある水晶発振子。サトー電気横浜店で購入
というか、上をしないとどれも動きませんでした。

水晶発振子のこと自体がよく分かっていないので原因は分かりません。もしかしたらはずれの基板をひいちゃったのかもしれません。

テスターの先でなくてサンハヤトのブレッドボード用のジャンパーワイヤー(20cm)でもできました。線の反対側は開放状態です。ちらっと思ったのはR6の10MΩをはずしちゃえばいいのかもしれません。

R6の左でなくても、R6とつながっている水晶の左足でもいいみたいです。


アプリレットを使ってみる

2007-04-10 23:04:51 | V850
Interface付録のV850の開発ツールの一つにappliletというのがあります。何をするものかというと、デバイスの初期設定みたいなある程度決まりきったことのCソースを自動で生成してくれる便利ツールです。詳しくはInterface 6月号で解説があるようです。

本家NECエレのappliletのページです。ここ。ドキュメントが色々そろっています。

写真の12個のデバイスについて、設定するだけでCソースを作ってくれます。12個全部でなくてもいいので、使いたいものだけ設定すれば、他は何も生成されません。

タイマー割り込みLEDチカチカを作ってみます。
- システムはwatchdogタイマーをoffにします
- 時計用タイマーは、使用する、INTWT、0.25sを選びます
- ポートはPCT6を出力にします
あとは、GOボタンを押してフォルダーを作ってからコード生成すればソースはできあがりです。

フォルダーの中の*.prwファイルをダブクリすればPM+が起動します。コンパイルオプションを変更しないといけません。ツール→コンパイラオプション→出力コード→プロローグエピローグランタイムを未使用に選択します(Interface p.112の図65)。

この状態だと、デバイスの初期設定しかしてくれていないので、したいことを追加してやらないといけません。
まずはmain.cにタイマースタートのコードを追加します。
void  main( void )
{
	WT_Start();	// ←追加 タイマースタート
	while (1) {
		;
	}
}

次に割り込み処理ルーチンにLED点滅のコードを追加します。割り込みハンドラはWATCHTIMER_user.cの中にあります。
__interrupt void MD_INTWT( void )
{
	PCT.6 ^= 1;	// ←追加 LED反転
}

追加したのは2行だけです。
あとはコンパイルして書き込めばLEDチカチカの完成です。

あいかわらず「F0c34: オンチップ・デバッグで使用する予約領域への書き込みはできません。(address 0000)」と怒られてデバッガは使えません。しかたないのでFPLで書き込んでいます。

はじめてでしたが、簡単にできました。898ページあるユーザーマニュアルがこのツールに凝縮されています。肝心の初期設定ですが、startupのところから呼ばれているSystemInit()の中で色々しているみたいでした。

メインクロックのところをサブクロックに変更して、動かしてみると・・・あいかわらず動きません。サブクロックは発振してないかもしれません。秋葉原に行く機会があったらATラボの人に聞いてみようかと思います。

とりあえず予習したので6月号が楽しみです。

4/15 追記 jsskさんがアプリレットでF0c34を回避してデバッガを動かす方法を見つけてくれました(4/13の記事)。システムの「オンチップディバグ設定」タブ:オンチップディバグ設定を「使用する」に変更します。

タイマー割り込みで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;
}