マウスインタフェースマイコン

H8,SH3などのマイコンに接続できるマウスインタフェース(PICマイコン)ができました。

PICマイコンのプログラムおよびマウスの接続回路については、以下のページを参考にしております。
マウステスターが完成!パソコンなしでマウスで遊べます
(ホームページの紹介は作者の杉原俊雄 様の許可をいただいております。最近、本ページの紹介を載せていただいております。ありがとうございます。)
マウステスターのLCD接続部分をマイコンH8,SH3などの汎用ポートにつなぐような仕様にしています。


PIC ライター
秋葉原のCOCONETでPICライターを\3,500で買ってきました。(061221現在、店頭では梱包箱なし\2,000です)
ドライバーがインストールできなかったのですが、ココにあるようにしたら問題なく使えました。
回路が簡単なので、パソコンによってはうまくいかないこともあるなんて話もあるようですが、低価格なのでお試しになる価値はありますね。
Configrationの設定は以下のような記述をソースの始めに入れておくと良いようです。070316
以下はセラミック発振子なし、内部RC発振、端子に発振出力の設定です
list p=PIC16F628A
#include <P16F628A.INC>
__CONFIG_LVP_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _INTRC_OSC_CLKOUT
;__CONFIG_LVP_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _XT_OSC こちらはコメント行なので機能しません。


製作記

qvga2-x320.jpg
QVGAボードに組み込んだところ


試作の外観
DSC01894-x320.jpg マウスインタフェースにPIC16F628Aを使用する。ICソケットにPICマイコンが載る。
全 体

DSC01897a-x320.jpg DSC01896-x320.jpg

基板 表
赤枠内が製作した回路

基板 裏




仕 様
PICマイコンは、PS2マウスをコントロールして、データを取得する。
H8,SH3などのホストマイコンと3本のポートを使ってインタフェースする。
古いホストインタフェースは、こちらに移動しました。)

ホストCPUインタフェースの仕様を、信号線が少ない同期式シリアルのものに変更しました。
SH7706
PIC16F628A
PA6
CK SerialClock
PA1
← レベルシフタ ←
DT DATA
PA7
→ デジタルトランジスタ →
MCLR 
 PA1には5V→3.3Vレベル変換のバッファが必要




回路図
Serial_mouseif_circuit.gif

部品リスト
ロケーション
品  名
店舗
店頭購入価格(単価)
(IC5) PICマイコン16F628A 秋月電子
\200
IC5 18ピン丸ピンソケット 秋月電子
\40
X1 4Mセラロック 秋月電子
\40
CN1 ミニDIN基板ソケット6P(PS/2コネクタ) マルツ電波 (千石電商)
\147
Q1 RN1401 デジタルトランジスタ 東芝 若松通商
\42
D1 小信号スイッチングダイオード 1SS270A 秋月電子
\10
R26 1/4W 1KΩ 千石電商
\5
R31,R32 1/4W 10KΩ 千石電商
\5
R29,R30 1/4W 4.7KΩ 千石電商
\5
R27,R28 1/4W 47Ω 千石電商
\5
C14 電解もしくはセラミックコンデンサ 47μF耐圧6.3V以上 千石電商
C21 セラミックコンデンサ0.1μF 千石電商
C10 電解もしくはセラミックコンデンサ 1μF耐圧6.3V以上 千石電商


ホストマイコンとのインタフェースタイミング

ホストCPUへのデータ送出タイミング
spi_hand_clock.gif

エラー発生時の処理とリスタート処理
 マウスのエラーをマイコンが検出したとき、PICのMCLR端子にLowパルスを送る。


PICプログラム(同期シリアルバージョン)
DIYS APIのマウス関数(掲載準備中)  参考:手クロックで、PICマイコンのシリアルポート出力をSH7706から読んでみる。

SH7706ホストプログラム の説明(このプログラムは、未検証です)
/* PS2 MOUSE INTERFACE MICON Sample
 * 
 *  by P.IGMON 
 *  release 2006.11
 */

#include <mes2.h>
#include <h8/reg770x.h>
#include "DIYS.h" ←ps2mouse構造体とPICマイコンとのポートの定義があります。


int main(void){
    int i,ret;

    ps2mouse mouse0;

    DIYS_ps2mouse_initialize();// SH7706 CPUのポートの初期化をします。
    
    for(i=0;i<300;i++){//  300回データを取得するテストです。
        ret =ps2mouse_getdata(&mouse0);//  この関数はエラーを検出したか、データが取得できるまで待ちます。
        while (ret == -1){
            printf("PS2mouse Eror detected ECODE =0x%2x\r",mouse0.mdev);
            DIYS_ps2mouse_restart();
            sleep(1000);
            ret =DIYS_ps2mouse_getdata(&mouse0);
        }    
        
        printf("mdev  =0x%2x\r" ,mouse0.mdev);
        printf("signs =0x%2x\r" ,mouse0.signs);
        printf("movx  =0x%2x\r" ,mouse0.movx);
        printf("movy  =0x%2x\r" ,mouse0.movy);
        printf("movz  =0x%2x\r" ,mouse0.movz);
        printf("btn45 =0x%2x\r" ,mouse0.btn45);
        printf("\r");    
    }
}




h83069f のページに飛んでいく