PIC24FJ64GB002を使ったUSBホストの実験 3
方向的にMIDIコンバーターの実装に進んでいます。
シリアル通信で外部MIDIメッセージを受信し、USB-MIDIインターフェスのMID音源I機器に
演奏データを送信します。下図のように真ん中でインタフェース変換を行います。
取りあえず実装し、動作確認としてIchigoJamからMIDIメッセージを送信してみました。
IchigoJam間はGNDとTX-RX接続の2本だけです。
MIDI端子(IN/OUT)ってピンが5本あるのでてっきり双方向かと思っていたのですが、
一方向だったんですね。この接続で初めて知りました。
相手からの応答の通信仕様が無いので疑問に思っていました。
実際にやってみて初めて理解出来ることってありますね。
動作の様子
IchigoJam用の演奏プログラムは、IchigoJam開発者の福野さんのブログ「福野泰介の一日一創」
の記事「YAMAHA NSX-1 x IchigoJam eVY1とBASICを使ったお手軽DTM」にて公開している
プログラムをそのまま利用しました。福野さんの記事ではeVY1を使ってIchigoJamで演奏
させています。
IchigoJamは単体で動作し、プログラム修正が容易なので実験や動作確認には良いですね。
今回の実験において、
「4MHzの外部クロック供給、内部オシレータ(FRC)でもいけるんじゃね?」
と思い、試してたところ動いちゃいました。
以後これでいっちゃいます。
4MHzのセラミック発振子を取り外せてちょっとすっきりしました。
回路図(電源供給の三端子レギュレータとmicroUSBコネクタを除く)的にも、
パスコンと抵抗とコネクタだけです。
(2016/03/08 修正 回路図のD+とD-の接続が間違っており、修正しました)
ソフト的に追加した機能は、
・シリアル通信周りの機能の実装
・MIDIメッセージ→MIDIイベントパケットに変換処理の実装
・USB周りの異常系(USBデバイスの抜き差し、USBデバイス電源落ち等)
・電源管理(USB機器が未接続の場合はアイドル状態にする)
です。
まだまだ、動作不安定なところがあります。
・USBデバイスを切断した場合に割り込みで呼ばれる関数から復帰後、フリーズした
ような状態になります。全く原因が分からず、仮対処として割り込み発生時に
ソフトウェアリセットをして復旧しするようにしました。
これは後々何とかしたい。
・でたらめなMIDIメッセージ(内容が正しくない)を流し続けるとポケット・ミクで
演奏できなくなる。
IchigoJamのシリアル出力は、画面に表示される内容も垂れ流しとなるので、
接続している間、MIDIメッセージとしてでたらめなメッセージも送ってきます。
MIDIメッセージ→MIDIイベントパケットの変換で不正メッセージは取り除いて
いるのですが、何故か演奏出来なくなります。こうなると手動でリセットしないと
復旧で出来ない。これは原因を見つけて対処が必要。
ソフト的な問題なのでハードとしてはMIDI端子を付けて、基板実装いたしましょう。
« コンパイラ XC16 V1.25用の Peripheral Libraries のインストール | トップページ | PIC24FJ64GB002を使ったUSBホストの実験 4 »
「IchigoJam」カテゴリの記事
- Ichigojam Rが届きました(2021.02.05)
- β版 IchigoJam Rを予約注文しました(2021.01.23)
- IchigoJamのファームウェア 1.4.1が正式に公開されました(2019.12.10)
- 「ichigoツール」をGithubにて公開しました(2019.11.09)
- ichigojamのファームウェアを1.4b13にアップデートしました(2019.11.06)
「PIC」カテゴリの記事
- BASIC言語が動くORANGE pico type S(キット)を組み立てました(2018.03.29)
- 久しぶりのPICマイコン、ちょっとハマった(2017.02.22)
- PIC24FJ64GB002を使ったUSBホストの実験 5(2016.03.08)
- PIC24FJ64GB002を使ったUSBホストの実験 4(2016.03.03)
- PIC24FJ64GB002を使ったUSBホストの実験 3(2016.03.03)
コメント
« コンパイラ XC16 V1.25用の Peripheral Libraries のインストール | トップページ | PIC24FJ64GB002を使ったUSBホストの実験 4 »
既知かもしてませんが、IchiugoJamで「UART1」でPRINT文のみシリアル出力にできます
投稿: 後田 | 2016年3月 3日 (木) 21時41分
後田さん
UART1の命令の存在、すっかり忘れていました。
情報ありがとうございます。
投稿: たま吉さん(管理者) | 2016年3月 3日 (木) 22時46分