Interface誌付属V850基板改造

 Interface誌2007年5月号に付属のV850基板で遊んでみます。

 付属基板にはUSB⇔UARTのICが載っていて、基板にUSBのBコネクタを取り付けるようになっています。そして、おそらくこの特集記事のために開発したのであろう「ID850QB-MON」というデバッガを使ってデバッグするようになっているのですが、せっかくMINICUBE2を持っているのに妙なもの(失礼)をゴテゴテと入れたくありません。

MINICUBE2につなげる

 CON3にMINICUBE(1?)用の信号は出ているのですが、どうやらMINICUBE「2」のことは全く考慮されていないようです。結構売れていると思うのですが、これを無視するのはいかがなものでしょうねぇ。

 まあ考慮されていないものは仕方がないので、改造を施します。

改造計画

 同誌6月号のCD-ROMに入っていた回路図を元に改造計画を立てます。こんな感じ。

 一応改造のポイントを箇条書きにします。

  1. R5を取り外す
  2. U2(74LVC06DR)を取り外す
  3. U4(UPD120N33TA-E1)を取り外す
  4. R7を取り外す
  5. CON3の2、3、4、5、6ピンの信号線をカット
  6. CON2の20ピンの信号線をカット
  7. U3(CP2102)の25ピンからの信号線をカット
  8. R8とC11を取り外す
  9. R2の4、5ピンに並列に、1.2KΩの抵抗追加
  10. ‾RES信号とCON3の6ピンを10KΩの抵抗で接続し、CON3の6ピンをCON2の20ピンに接続
  11. CON3に必要な信号を引き出し
  12. U1(UPD70F3716GC/V850)の20ピンを10KΩの抵抗でプルダウン

 こんな感じです。ポイントというかほとんど手順になってますね。(^^;

 本当はU3(CP2102)も取り外したいところですが、このようなパッケージになってくると、後述の方法では難しいと思います。サンハヤトから発売されている特殊ハンダなどを使わないと難しいでしょう。使いもしないデバイスに電力を取られるのはちょっと嫌ですが、V850とは完全に切り離されるので、とりあえずは放っておきます。

 8.は、取り外しておいた方がCON2の38ピンが空くので、ジャンパなどで好きな用途に使えるようになります。もしくは、CON2の38ピン付近でパターンカットしてもいいかもしれません(かなり太いですけど)。

 9.は、抵抗を1KΩ程度にするのが目的です。1.2KΩがなければ1KΩでもかまわないと思います(抵抗が900Ω程度になりますが、動きます)。

 手書きではわかりにくいかもしれませんので、CON3の各ピンの信号を書いておきます。

Pin 信号
1 3.3V
2 ‾RES
3 TXDA0
4 RXDA0
5 FLMD1
6 RESET signal
7 FLMD0
8 P37
9 PCT6
10 GND

 色付けしているところが手を加える(というより、付け替える)信号です。

 TXDA0/RXDA0がR9によってプルアップ/プルダウンされていますが、MINICUBE2の接続例とは逆になっています。気になるところですが、この辺は面倒なのでとりあえずそのままにしておきます。

部品の取り外し

 不要な部品を取り外します。

 参考までに、部品の取り外し方の一例を紹介しておきます。いろいろあるでしょうが、私はSOPぐらいのICなら「ハンダもりもり法(勝手に命名)」で取り外しています。

部品が外れるまで、こて先ほどではないでしょうが、半田が溶けるぐらいの温度が部品と基板にかかり続けています。ICなどの部品は意外と強いのですが、パターン(パッド)は割と脆く剥がれてしまったりします。パターンの方が大事な場合が多いので、熱をかけすぎてパターンをはがさないように注意してください。不慣れな場合は、壊してもいいような基板で練習してコツをつかむといいでしょう。

 安全確実にいくなら、サンハヤトから出ている表面実装部品取り外しキットなどを使うのがいいと思います。

 ハンダをICの足全体に盛ります。

 半田ごてを左右交互に当てて、ICの横に盛ったハンダを溶かします。ハンダが溶けてきたら、両側が溶けた状態を維持できるようにすばやくこてを動かす必要があります。ハンダもだいぶベタッとしてきて、(かたよ)ったりしてきます。この辺は少し練習が必要なところでしょう。

 両側のハンダが溶けたら、こてでICをどちらかに押してみます。うまく溶けていれば「ズッ」とズレます。あまり勢いよく押すとほかの部品にくっついたりして面倒なことになるので注意します。

 左側の大きなハンダを取り除いて少しきれいにしました。左側の足はもうランドからは外れています。

 ピンセットを使って外していきます。今度は右側を重点的に外すのですが、左側もランドからは外れているとはいえ、内側のスルーホールにくっついているようなので、やはり両方暖めながらピンセットで外します。

 このとき、もう少しと思って無理に引っぺがすとパターンが剥がれてしまう可能性がありますので、注意が必要です。

 取れました。さすがにこのままにはできないので、少し掃除します。

 大きなハンダのかたまりは吸い取り器で、残ったハンダは吸い取り線で取り除きます。ヤニの汚れは、綿棒にペイント薄め液などをつけてふきふきします。

 似たような方法で、やはりハンダを付け足して、ICを片側ずつランドから外す方法もあります。片側ずつなのでこちらの方がやりやすいかもしれませんが、力加減を間違うとやはりパターンをはがしてしまう可能性はあります。まあ、いずれにしてもリスクはあります。

 不要な部品を取り除くとこんな感じ。



パターンカット

 不要なパターンをカットします。ちなみにカットには、近所のホームセンターで購入した電池式のルーターを使用しました。本来はガラス工芸用だそうで、パワーはありませんが、最初から結構小さい先端のビットが付いてます。

 回路図では信号名だけを書き変えているところがありますが、結局ほかの場所からジャンパを飛ばしてくるしかないので、CON3の2〜6ピンはすべてカットします。



 カットする場所です。無理に狭い場所をカットしているのは、単なるチャレンジ精神です。(^^; もっと広いところをカットするのが賢明でしょう。

リセット信号の処理

 リセット信号まわりは少しややこしいかもしれません。

 リセット信号(‾RES)は、R2によってプルアップされています。この抵抗は、リセット信号のほかにも‾RDなどの制御信号をプルアップしていますので、なんとかこの抵抗を利用することを考えてみます。

 テスターで導通を調べてみると、左の部分をカットすれば下の図のようになりそうだったので、思い切ってえいやっとカットしました。ビンゴ。



 図のように1.2KΩ程度の抵抗を並列に付けて抵抗値を1KΩ程度に下げます。

 私は1KΩのチップ抵抗を重ねて付けました(日記に書いた1個目にはリードのカーボン抵抗つけましたが、やっぱりジャマです)。

配線

 各所からCON3にジャンパを飛ばしてきます。細いワイヤーなら、ワイヤーをはさんでピンヘッダを挿せますので、私はこのようにしました。

 一通り実装するとこんな感じ。20ピンのプルダウン抵抗は適当に付けやすいところに付けます。もうちょっといい場所があるかもしれません。

ケーブル作成



 手元に10線フラットケーブルが余っていたので、これを使いました。片方のコネクタを取り外し(というか、壊してしまいましたけど…(^^;)、MINICUBE2に合わせて16ピンのコネクタに付け替えます。GNDが端から端へ(よじ)れているので、かなり変になりました。(よじ)れに合わせて線の長さを変えればよかったんでしょうけど、面倒なので強引にそのまま挿しました。(^^;

ソフトウェア関連

 ついでにソフト関連についてもさらっと書いておきます。

開発環境

 付属のCD-ROMに入っているコンパイラCA850は、なんとこの企画のためにリンカ制限が256KBに拡張されています(配布されている無償版は128KBまで)。すばらしい。なので、コンパイラは付属のCD-ROMからインストールします。

 CD-ROMのインストーラを起動、デバッガのチェックはすべて外します。デバッガは、NECエレクトロニクスのサイトから最新のものをダウンロードしてきて、後からインストールします。

 こちらがサイトからダウンロードしたデバッガのインストール画面(2007年12月17日時点)。やはりこちらのほうがバージョンが上です。バージョンが高ければいいものかどうかはわかりませんけど。

 持っていない「IECUBE」や「MINICUBE(1?)」のドライバはチェックを外します。MINICUBE2のドライバも導入済みであればチェックを外しておきます。入っているのに更にインストールしようとすると、途中で怒られてやり直しになります。特に害はありませんが。

テスト用プログラム

 実はあまり好きではないのですが、単なる動作確認用のプログラムということで、Appliletを利用して雛形を作ります。

 ポートCTの6ビットにLEDがつながっているので、ここを出力に設定してコードを生成します。Appliletの使い方については、ここでは割愛します。

 生成されたコードに対して、MINICUBE2でのデバッグ設定として「systeminit.c」に次の部分を追加します。

void  SystemInit( void )
{
    _rcopy(&_S_romp, -1);

    ClrIORBit(DCHC0, 0x1);      /* disable dma0 - dma3 */
    ClrIORBit(DCHC1, 0x1);
    ClrIORBit(DCHC2, 0x1);
    ClrIORBit(DCHC3, 0x1);

    VSWC = 0x01;            /* mainclock (2MHz, 16.6MHz) 1wait */

    __DI( );            /* disable interrupt */

    PRCMD = 0;
    OCDM = 0;
    UA0RIC.6 = 0;
    PFC3 &= ‾0x03;
    PMC3L |= 0x03;

    PORT_Init( );           /* Port initiate */
    INT_Init( );            /* INT initiate */
    RTO0_Init( );           /* RTO0 initiate */
    __EI( );            /* enable interrupt */
}

 初め、どうしてもOCDMレジスタが0にならないので少し悩みましたが、コイツは「特定レジスタ」というヤツでした。つまり、最初にPRCMDレジスタにダミーの値を書き、その直後に書き込みをしないと書き換えられないという、保護されたレジスタです。こういうレジスタはほかにもあるので要注意です。

 メインルーチンはこれだけです。

void  main( void )
{
    while (1) {
        PCT.6 = 0;
        PCT.6 = 1;
    }
}

 ブレークをはってみたり、ステップ実行をしてLEDの変化を見てみます。そのまま実行させるとLEDがボヤーっと光ります。とりあえず動いてるみたいです。

最後に

 とりあえずMINICUBE2につながるようにはなりました。データシートの接続例と比べると、TXDA0/RXDA0のプルアップ/プルダウンが逆になっており、影響のほどはよくわかりませんが、今のところ動いているみたいです。

 個人的にMINICUBE2のV850対応は、無理やりの後付けといった感じがします。プログラム領域から2KBもモニタプログラムに取られるし(搭載メモリから考えると微々たるものですが)、動作も結構不安定です(ID850QBがよくデバイスとの通信を失敗する)。もうそれはそれは78K0の比ではありません(78K0の方が安定してる)。

 しかし前述のとおり、データシートに沿っていないところがいくつかあるし、環境依存かもしれませんので(職場と家で試したのですが、家の環境の方は比較的安定していた)、V850とMINICUBE2の組み合わせが不安定と一概に決め付けることはできませんね。

 また今度自分でV850(JJ2あたりの)基板作ってみようかな…。(^^;

Appendix

 端子の寸法と接続図です。