MSP430を使って

PC−>MC80+の変換ボードを作製します。

その2:MSP430のピン設定

USB−MIDI−>

パラレル変換プログラムのスケルトン



2018年
1月18日
MSP430のピン仕様です。ここをクリックするとオープンオフィスで作成したエクセルシートがダウンロードできます。


システム全体のブロック図は以下です。


PCからUSB−MIDIデータを4バイトづつ受信して処理します。受信したイベントをリアルタイムでノートオン、オフ処理をするだけです。1〜8chはパラレル、10chはUART−MIDIでボルカビーツに出力します。先頭の1バイトはUSB−MIDI にMIDIイベントを乗せるために追加された、ケーブルナンバ(上位4ビット)とコードインデックス(下位4ビット)です。以下、USB周りのスケルトンです。CCSのプロジェクトはソースを整理して次回アップします。
    
    while (1)
    {
        mode = P2IN & 0x80; // パネルのスイッチをよむ:HIGH:TK80 LOW:MSP430
        if (mode) { // TK80
             // TK80と接続
             // ベロシティを最大に設定
        }
        else { // MSP430
と接続

            switch (USB_getConnectionState())
            {
                // This case is executed while your device is enumerated on the
                // USB host
                case ST_ENUM_ACTIVE: //PCとUSBで接続中

                    // USB-APIを使って4バイトを読む
                    count = USBCDC_receiveDataInBuffer(midirecv, 4, CDC0_INTFNUM);
                    if (count == 4) {
                        // 4バイト読めた
                        // イベントを解析する。1~8チャンネルなら
                        // ノートオン/オフのみMC80+へパラレル出力する
                        // 10チャンネルならUART-MIDIへ出力する
                    }
                    else {
                        // 4バイト読めなかった
                        if (count != 0) {
                            // 0バイトでなければLCDにエラー表示
                        }
                        else {
                            // 0バイトなら音出し以外のリフレッシュやスイッチ入力を行う
                        }
                    }
                    break;

                // These cases are executed while your device is disconnected from
                // the host (meaning, not enumerated); enumerated but suspended
                // by the host, or connected to a powered hub without a USB host
                // pretent.
                case ST_PHYS_DISCONNECTED:
                case ST_ENUM_SUSPENDED:
                case ST_PHYS_CONNECTED_NOENUM_SUSP:
                    //__bis_SR_register(GIE);
                    //_NOP();
                    break;

                // The default is executed for the momentary state
                // ST_ENUM_IN_PROGretS.  Usually, this state only last a few
                // seconds.  Be sure not to enter LPM3 in this state; USB
                // communication is taking place here, and therefore the mode must
                // be LPM0 or active-CPU.
                case ST_ENUM_IN_PROGRESS:
                default:;
            }
        }
    } //while(1)


back

line