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

Sim's blog

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

V850付録基板のモード切替スイッチを作りました

2007-06-10 00:50:15 | V850
前回、V850付録基板のモードを切り替えるための回路を考えました。マルツでスイッチを買ってきたので作ってみました。デバッガモード、実行モード、FPL書き込みモードを切り替えることができます。リセットスイッチもつけてみました。

1つのスイッチでモードが切り替えれるので便利です。

6/14 追記 チャタリング対策をしていないのでリセットボタンはうまく動いていません

7セグの16進カウンター

2007-06-08 10:59:59 | V850
0.5秒毎に16進カウンターがカウントアップするプログラムを作ってみました。回路とかはここと同じです。

まずはappliletです。
- システムはウォッチドッグタイマーなし、(オンチップデバッグあり)
- 時計タイマーは、使用する、(サブクロックを使用する)、時計タイマー割り込みの許可、(0.5s)
- ポートはP90-P97が出力で初期値は1、P98を出力で初期値は0

サブクロックの方が正確なのでサブクロックを実装しているときはサブクロックを使用するにします。

プログラムはmain.cがこんな感じです。時計タイマーをスタートして無限ループしているだけです。カウントアップは割り込みルーチンで行います。ポートの初期設定もappliletにまかせています。
void  main( void )
{
    WT_Start();        // 時計タイマースタート

    while(1) __halt(); // 無限ループ
}


割り込み処理はappliletが自動生成してくれるWATCHTIMER_user.cを書き換えます。
// 数字パターン(0-F)
const UCHAR pat[16] = {
    0x81, 0xcf, 0x92, 0x86, 0xcc, 0xa4, 0xa0, 0x8f,
    0x80, 0x84, 0x88, 0xe0, 0xb1, 0xc2, 0xb0, 0xb8,
};

// 0.5秒毎の割り込み処理
__interrupt void MD_INTWT( void )
{
    static int ctr = 0;

    P9L = pat[ctr];      // パターンを表示
    ctr = ++ctr & 0x0f;  // 次のパターンにする
}

1端子に流れている電流は2.8mAくらいでした。

そういえば電気特性とか、ちゃんと見てなかったなと思って(ォィォィ)、ユーザーズマニュアルを見てみました。28章の「電気的特性」に出ています(p.799)。1端子4mA、全端子合計50mA。え? こんなに少なかったんですね・・・。あぶないあぶない、全然きづいていませんでした><

7セグメントLEDにつないでみる

2007-06-08 01:00:58 | V850
V850付録基板に7セグメントLEDをつないでみました。7セグは秋月で売っているGL9A040Gというアノードコモン(+側共通)のものです。10個で100円でした。

回路図はトラ技2007/2月号のp.219を参考にしました。抵抗値を変えています。トランジスタにつながっているのは10kΩですが、トラ技のは6.8kΩでした。マイコンと7セグをつないでいる抵抗は510Ωですが、トラ技のは200Ωです。

BSch3Vで回路図を描いてみました。

流れている電流ですが、全部点灯した状態で21mAくらいでした。これでもかなり明るいので、電流制限用の抵抗は抵抗値をもっと大きくしてもよさそうです。

この7セグの最大定格はセグメントあたり20mAです。1つだけセグメントを点けて測ってみると3.2mAくらい流れていたので定格内です。最大定格はデューティ比1/10でパルス幅0.1m秒で動かしたときは100mAまて流せるようです。
7/8 追記 V850の1端子の定格は4mA(合計50mA)なので、定格を超えないようにしてください。最悪、CPUを壊します。

回路はいつものようにブレッドボード上で組みました。ブレッドボードだと並べるわけにいかないので1個だけです。

テスト用プログラムは、appliletで雛形を作ります。
- システムはウォッチドッグを使用しない、オンチップデバッグを使用する
- ポートはP90~P97とP98が出力で初期値は1にしました。

プログラムです。オンチップデバッグを使うので簡単です。
void main(void)
{
    UCHAR pat = 0x00;  // 7segに出力する値
    P9H.0 = 0;         // 0:点灯 1:消灯

    while(1){
        P9L = pat;     // 7segLEDに出力
    }
}




ジャンパをJ3とJ2につけて、PM+でF5を押すとコンパイルが始まってデバッガが起動します。ダイアログはOKボタンを押すとオンチップデバッグが開始します。

F10を押すと1ステップずつ実行します。写真は左側がソースで右側がローカル変数です。デフォルトではローカル変数のウインドウは表示されていないので、メニューのブラウズからローカル変数を選びます。ローカル変数ウインドウの値のところをダブルクリックすると値を編集できます。

F10を何回か押してwhileループにはいったらpatの値を書き換えて、F10を何回か押すと7セグの表示も変わるのが確認できます。オンチップデバッグを使うとコンパイルしなおさなくてもいいので便利です。

7セグは対応するビットを0にしたとき点灯、1にしたとき消灯します。P9L=0x00にすると全部点きます。

V850のP9を1ビット単位でアクセスするときは、16bitのP9は使えず、上位と下位の8bitレジスタP9HとP9Lを使う必要があります。

7セグ自体の解説はトラ技の2007/6月号のP.184-185が参考になりました。7セグを使うのは初めてでしたが無事点灯できました。複数個つないでダイナミック点灯とか、秋月で売っている青色のとかも試してみたいです。

サイキット小液晶につなぐ冶具

2007-06-07 02:58:59 | V850
V850付録基板とサイキットさんの小液晶をつなぐ冶具を作ってみました。小液晶は2.0mmピッチなので、ケーブルとコネクタをつないでいました(6/2)。

緑(青)液晶用の冶具(5/27)と違う所は、
- 6本の制御線はpull-upもしくはpull-downしたこと
- 20pinのボックスヘッダを使っていること
- 19pinのpull-up / pull-downを選ぶためのジャンパピンをつけたこと
- 普通のユニバーサル基板を使ったこと
です。

19pinをpull-downにするとELバックライトが点きます(6/5)。

データ線(8本)と制御線(6本)をpull-upしていれば5V系で使えますが、今回はそうしていないので3.3V系専用です。3.3VなのでELバックライトは暗いです。

配線数が減るので、やっぱり前回使ったグランド付のユニバーサル基板(サンハヤトのICB-86)の方が楽でした。


Interface 7月号の部品集め

2007-06-06 01:51:27 | V850
メモ(6/3 秋葉)

p.149の部品表
- OPアンプNJU7032Dは千石になくてマルツにあった
- CXA1645Pは秋月の店頭では売り切れで、お店の人に聞いたら奥から出してくれた
- CXA1645Pは幅が広いので、秋月で売っている24pinソケットにはささらなかった
- CXA1645Pの袋にはSILソケットも入っていた。
- ついてきた紙によるとR22の20kΩは誤差1%
- RCAジャックは秋月にも売っていた。ただし色は白がなく黒があった(30円)。ピン配置も違う
- 半固定抵抗は写真に載っているようなのは千石では見つからなかった。マルツにあった。
- 西川電子部品は日曜休み

- 通販ではなくなったドリルの刃を秋月店頭で在庫限りで売っていた
- くも8ちゃんは千石、マルツ共に売り切れ

サイキット小液晶のバックライトについて教えてもらいました

2007-06-05 02:28:50 | V850
前回サイキットさんの小液晶に画像を表示してみました。他の液晶のバックライトはLEDなのですが、この液晶のバックライトはELです。メールでサイキットさんに問い合わせてみたところ、さっそく調査して返事をくださいました。許可をいただいたので情報を公開します。

バックライトの点灯のしかたです(メールまま)

・19番のpinをプルダウンする(0V近くの電圧を加える)とELが点灯する。

・外付けの装置は必要ない。

・5.0Vのときにバックライトを点灯するとLED程は明るくないが、
 目視するのに十分な輝度が得られる。電流は60mA程度増加する。

・3.0Vのときにバックライトを点灯するとあまり明るくない。
 電流は20mA程度増加する。
(メール引用おわり)

注意点としては「電流など細かい点は、次回ロットで変わるかもしれない」ことだそうなので、あくまで参考情報ということでお願いします。

また、うれしい情報としては「このサイズ(小)の青色液晶(白LEDバックライト)も入荷する予定」だそうです。

というわけで、さっそく5Vにつないでみたのが写真になります。一応、周りを暗くして撮っています。本当はもっと明るいのですが、うまく撮れていないです。

バックライトも使おうとすると、V850自体は5Vトレラントなので入力は平気ですが、液晶の認識するHレベルが0.7VDDなので3.5Vになって3.3Vより高いので、Nチャネルオープンドレイン出力にしてプルアップしてやる必要があります。もしくは、液晶自体を4.5Vとかで動かすのもありかもしれません(ダイオードで電圧降下させる?)。
いずれにしろ19pinはオープンにせず、HかLに出力を固定した方がよさそうてです。

他に教えてもらったのは
- 102Kと書いてあるL1が昇圧用コイルらしいこと
- 20pinは直接ELに接続しているわけではなく、RLと書いてあるあたりのジャンパを接続しなければいけないかもしれないこと
です。

内部インバータと外部インバータが干渉するとまずそうな気もするので、19pinは外部ELと内部ELの切り替え用の信号なのかもしれません。そうだとすると、電源をいれる順番とかも考えなければならないことになって大変そうです。
6/6 追記 RLを接続したときの話です。RLをつながないときは20pinは独立しているので順番は気にしなくていいです。

昇圧しているということで言えば、念のため感電にも気をつけた方がよさそうです。

最後に親切に対応していただいたサイキットさんに感謝します。

サイキットの青液晶につないでみる

2007-06-04 22:49:26 | V850
サイキットさんの青液晶にもつないでみました。すんさんが解析に使われたものです。
制御プログラムは前回と同じです。接続に使う冶具も緑液晶と同じです。

すんさんがレポートされているようにバックライトをつけないと表示がほとんど見えません。ということでバックライト必須です。

電流を調べてみました。5Vをつないだときは約58mA流れていました。100Ωの抵抗をつけてみたら画面は暗くなりましたが約18mAまで落ちました。3.3Vにつないでみると14mAちょいでした。読めないことはないので3.3Vでもいいかもしれません。さらに100Ωをつけて5mAくらいまで落としても、かなり暗いですが見れないことはなかったです。

拡大してみました。5Vで電流制限抵抗なしのときです(58mA)。


3.3Vで100Ω抵抗をつなげたときです(4.8mA)。


実際はもっと鮮やかなのですが、うまく写真がとれません。携帯だし腕もないのでご勘弁。

サイキットの小液晶につないでみる

2007-06-02 20:28:03 | V850
V850付録基板をサイキットさんで売っている小液晶につないでみました。青液晶や緑液晶と同じく3.3Vで動作します。ソフトも前回のものに一切手をつけずそのまま使えています。

違いはというと

- ピンの間隔が2.0mmなので2.54mmのヘッダピンとかが使えない。私はケーブルを直接はんだづけしました。一応、2.0mmピッチのヘッダピンは千石で売っています。

- 上の方に4種類のマークが出力される。いかにも携帯用の液晶の流用といった感じです。上にマークが出るかわりに右下の4ドットが出力されません。(124,63)~(127,63)の4ドットが上のマークの制御になっています。

- バックライトがELです。青液晶と緑液晶のバックライトはLEDでした。ELって、使い方が全く分からないのですが、EL用インバータとかにつなげるのでしょうか。もっとも、バックライトがなくても結構きれいに見れます。

- 負電源を内蔵していてVEEから-9Vくらいが出力されています。半固定抵抗で分圧してV0に入力するのも他の液晶と同じです。写真のは-5.3Vくらいのときです。VDD-V0の最大定格は15Vです。VDD = 3.3VなのでVDD-V0=8.6Vとなって定格内での動作になります。このあたりはすんさんの解析と一致しています。

拡大してみました。バックライトなしです。

枠は(0,0)-(127,63)です。その上にマークが4ついます。

緑液晶と並べてみました。


注意 ケーブルは一番左に赤い色がついていますが、1pinではなく20pinです。つけおわってから逆だったことに気づきました。まぬけすぎ。

20pinの圧接用コネクタは千石で120円でした。広げると真ん中が短くなるのも気づいていなくて(途中で気づいた)、ケーブルが妙にたわんでいます。


PWMでLEDぼわっと

2007-05-30 01:32:24 | V850
V850のタイマー機能の一つにPWM出力があります。レジスタに周期とデューティ比を設定しておくと勝手に点滅してくれます。appliletで設定してタイマーを開始する(TMP0_Start()等)だけでLEDチカチカができてしまいます。

デューティ比をどんどん書き換えてボワッと点いたり消えたりするのを作ってみました。タイマーはタイマーP0を使いました。タイマーP0専用の出力TOP01はCON2の17pinなので基板搭載のLEDは使えません。

CON2の17pin(TOP01) → LED+
LED- → 抵抗(1kΩ) → CON3の10pin(GND)

のようにつなぎました。

appliletの設定は次のようにしました。
- システムは、ウォッチドッグなし、(デバッグあり)
- タイマーはタイマーP0タブでPWM出力。詳細ボタンで
 設定単位msec、周期1、デューティ比0、TOP01端子出力の許可にチェック。

プログラムはこんな感じです。
void  main( void )
{
    int i, d, t;

    TMP0_Start();            // タイマースタート

    d = 0;                   // 方向は増加
    t = TM_TMP0_PWMWIDTH;    // デューティ比初期値

    while (1) {
        for(i = 0; i < 60000; i++) __nop(); // 適当に待つ

        if(d == 0){          // 明るくなる処理
            t += 1000;
            if(t >= TM_TMP0_PWMCYCLE){ // 最大を超えた
                t = TM_TMP0_PWMCYCLE;  // 最大値
                d = 1;       // 方向は減少に変更
            }
        } else {             // 暗くなる処理
            t -= 1000;
            if(t < 0){
                t = 0;       // 最小値
                d = 0;       // 方向は増加に変更
            }
        }
        TP0CCR1 = t;         // デューティ比を書き込む
    }
}


タイマーP0は周期がTP0CCR0、デューティ比がTP0CCR1に書き込むことで変更できます。動作は、タイマースタートすると出力を1にして0からカウントアップしていって、TP0CCR1になったら出力が0になって、TP0CCR0になったら0から繰り返しです。ソフトからは何もいじらなくても勝手にハードで実行してくれます。
TM_TMP0_PWMCYCLEとTM_TMP0_PWMWIDTHはappliletが計算してくれたTP0CCR0とTP0CCR1の初期値です。デューティ比は0~TM_TMP0_PWMCYCLEの間の数にします。カウンターの値なのでかなり細かく設定できます。
PWM出力はTOP00だと駄目でTOP01じゃないといけないみたいです。
TP0CCR1の変更はカウンタがTP0CCR1を超えた後でないといけないそうなので、本来ならTP0CCR1を超えたときに発生する割り込みのタイミングで変更するのがよさそうです。手抜きでソフトウェアタイマーで適当にごまかしました。

Interface 7月号

2007-05-28 22:56:41 | V850
Interface 7月号を買うのをすっかり忘れていました。
V850関係は別冊付録の「V850マイコン活用ハンドブック」と「V850マイコン基板を用いたカラー表示ビデオ・ゲーム機の製作(前編)」
160x120ドット256色出しています。コンポジットの信号を作るのに専用のエンコードIC、CXA1645Pというのを使っているみたいです。
ソースはCQ出版のホームページからダウンロードできます。


サイキット液晶につなぐ冶具(一応完成)

2007-05-27 07:01:03 | V850
サイキットさんから購入した液晶をV850付録基板につなぐ冶具が、やっとこさできました。本当はデータ線とか全部pull-upしようと思っていましたが、まぬけなことに先にビニール線を配線して裏がぐちゃぐちゃなので断念しました。とりあえずRST pull-up、CS1 pull-down、CS2 pull-downの3本だけいれています(10kΩ)。これでマイコン側の端子がハイインピーダンスになっても液晶の表示が消えたりすることがなくなりました。

反省点はありすぎでしたが、とりあえず動いたのでうれしかったです。

現在、サイキットさん液晶(緑と青)は売り切れのようです。3.3Vでも5Vでも動作して、制御も比較的簡単で安価なので再入荷されることを期待しております。

最後に、この液晶をいちはやく発見して解析されたすんさんに感謝します。

5/31 追記 サイキットさんで「この商品は2007年06月25日(月)に入荷予定です。」となっていて予約を受け付けています。


サイキット液晶につなぐ冶具

2007-05-26 01:33:13 | V850
データ8本と制御6本をつなぐ冶具を作っています。液晶とV850付録基板の間にある基板です。
いわゆる裏面はお見せできません状態です。
使った基板はサンハヤトのICB-86というグランド線とかDIP ICを載せる用にパターンがはいっているものです。でも全部ビニール線でつないだので意味なかったです。普通のユニバーサル基板でスズメッキ線で配線した方がよかったかもしれません。はんだづけは慣れていないので難しいです。

結線です。
液晶   名前   付録基板CON1
 1 --- GND
 2 --- Vcc
 3 --- V0 ←----- 半固定抵抗OUT
 4 --- RS ----  9
 5 --- RW ---- 13
 6 ---  E ---- 10
 7 --- D0 ----  1
 8 --- D1 ----  2
 9 --- D2 ----  3
10 --- D3 ----  4
11 --- D4 ----  5
12 --- D5 ----  6
13 --- D6 ----  7
14 --- D7 ----  8
15 --- CS1 --- 11
16 --- CS2 --- 12
17 --- RST --- 14
18 --- VEE ----→ 半固定抵抗GND
19 --- LED+ -- NC
20 --- LED- -- NC

あとは半固定抵抗とプルアップ抵抗です。とりあえず今日はここまで

スイッチ1つでモード切替え

2007-05-25 03:57:32 | V850
Interface 5月号p.85の図11の回路図を見るとJ1とJ2の1pinはつながっています。ということはON-OFF-ONタイプのスイッチがあればJ1とJ2の切り替えができます。2回路入りのスイッチを使えばJ3もON-OFFできます。J1,J2,J3の刻印のある方が2pinです。
スイッチを持っていないので実際に試したわけではありませんが、スイッチ1つでジャンパーの抜き差しの面倒から解放されるはずです。

5/25追記 回路図の2極3投は2極双投の間違いです。日本開閉器工業のデータシートをごらんください。

ChaNさんのsp850es.exe

2007-05-22 23:42:20 | V850
ChaNさんのサイトの78KとV850ライタの製作という記事では安価なライタと書き込み用ソフトsp850es.exeを公開されています。
ライタを作らないと使えないと勝手に思い込んでいましたが、すんさんの掲示板にkumanさんが書き込まれているのを見て実はそうではないことを知りました。kumanさんの掲示板ではでんし研のTADさんがライタを使わなくてもsp850es.exeを使ってV850付録基板に書き込めることを書いておられます。TADさんはデュアルライターV850版の記事中でsp850es.exeの使い方を解説しておられます。

さっそく試してみました。sp850es.exeと同じディレクトリにsp850es.iniというファイルを作ります。
ファイルの中身は
-dev=3716
-port=.COM4
-freq=5000
-bps=153600
です。
あとはコマンドラインからsp850es ファイル名とするか、ショートカットを作ってhexファイルをドラッグ&ドロップすると書き込みが始まります。
必要ないところは書き込まないので高速です。デバッガを使うと間があいて、メモリの最後の方にffが並んだhexファイルができますが、このようなhexファイルでもデータのないところはeraseするだけなので高速です。正確にはデータがあっても全てffならeraseだけにしているようです。よく考えられています。
ジャンパはFPLと同じでJ1とJ3をショートします。