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)