2017-12-01から1ヶ月間の記事一覧

ムライボックス (19) --- ムライシールド (3)

2017 年 12 月 08 日付けの記事 (→こちら) では、「ムライシールド(仮)」の回路図を示しました。 これは、Arduino 本体の基板の面積と同程度の基板上に作成するという制約、および「SparkFun」製の「MIDI シールド」と同様な機能を持たせるという制約のため…

ムライボックス (18) --- ソフトウェア (10)

8 ピン・パッケージである PIC16F18313 には CLC (Configurable Logic Cell) が 2 個しか搭載されていないので、単体では 2 ポートしか実現できません。 外部に "OR" ゲートを設けることにより、8 ピンの制限内であと 2 ポート追加することが可能です。 つま…

ムライボックス (17) --- ソフトウェア (9)

XG Display Bitmap Data システム・エクスクルーシブ・メッセージにより、リマップ/ビットマスク・テーブルを MIDI シーケンス・データを使って書き換える手段を得ることができましたが、そのメッセージデータを作成する (ホスト PC 上で実行する) ユーティ…

ムライボックス (16) --- ソフトウェア (8)

前回の記事では省略した、システム・エクスクルーシブ・メッセージ処理部のプログラム・リストを下に示します。 「0xf8u」のようにわざわざ「unsigned」を指定していたり、(uint8_t) などのキャストをしているのは、8 ビット PIC 用の XC8 コンパイラで warn…

ムライボックス (15) --- ソフトウェア (7)

PIC 版のソフトウェアでは 8 ビット幅に削減していますが、本来のビットマスク・テーブルは 1 エントリあたり 16 ビット幅のデータを 16 エントリ持つ配列として構成されています。 このデータ量 (32 バイト) を一度に転送できるシステム・エクスクルーシブ…

ムライボックス (14) --- ソフトウェア (6)

今回は PIC16F18325 を使用した場合の話です。 ハードウェア回路としては 2017 年 12 月 12 日付けの記事 (→こちら ) に掲載してあります。 MPLAB X IDE に付属の MCC (MPLAB Code Configurator) を利用して作成しています。 プログラム・サイズは 820 ワー…

ムライボックス (13) --- ソフトウェア (5)

ストップ・ビットの中央付近で「送信完了」のフラグが立つタイプの UART では、残りの 1/2 ビット・タイム (約 16 μs) 期間の、まだストップ・ビットの中にいる状態で次のキャラクタ・データの書き込みを終えることができれば余分なアイドル状態が挿入される…

ムライボックス (12) --- ソフトウェア (4)

ソフトウェアの話の続きです。 MIDI IN から入力される MIDI ストリームを UART RX から 1 バイト読む MIDI チャネル番号書き換え、ビットマスク・パターン読み出しなどの処理 マスク・パターンの出力、および MIDI バイトを UART TX に出力 という処理の流…

ムライボックス (11) --- CLC

Microchip 社の 8 ビット PIC の最近の品種 (PIC16F1… で始まる 4 桁あるいは 5 桁型番) には、CLC (Configurable Logic Cell) と呼ばれる小規模な PLD (Programmable Logic Device) が含まれているものがあります。 代表的な品種としては、「全部入り」(ful…

ムライボックス (10) --- ムライシールド (2)

STMicroelectronics Nucleo シリーズ (より正確には Nucleo64 シリーズ) では、ST 独自の「Morpho」コネクタのほかに Arduino Uno R3 互換の Arduino コネクタを持ち、Arduino 用シールドが利用できます。 しかし、デフォルトではコネクタのピン D0、D1 には…

ムライボックス (9) --- ムライシールド (1)

ソフトウェアの話とは一旦離れて、今回は Arduino および Nucleo 用の「ムライシールド (仮称、未公認)」の話です。 「SparkFun」製の「MIDI シールド」と機能的にコンパチブルなモードと、ムライボックス・モードとを、ジャンパ・ポスト上のショート・プラ…

ムライボックス (8) --- ソフトウェア (3)

C 言語で記述したプログラムの断片を示しながら、もう少し具体的な処理の説明をします。 まず、処理で使う変数です。 uint16_t r_mask; // "running" bit mask uint8_t c; // MIDI byte from MIDI-IN uint8_t midi_ch; // MIDI ch / sys msg type uint16_t b…

ムライボックス (7) --- ソフトウェア (2)

ステータス・バイトの値が 0xF0 〜 0xFF の範囲の MIDI メッセージはまとめて「システム・メッセージ」と呼ばれ、「システム・リアルタイム・メッセージ」、「システム・コモン・メッセージ」、および「システム・エクスクルーシブ・メッセージ」と呼ばれる …

ムライボックス (6) --- ソフトウェア (1)

今回からソフトウェアの話に入ります。 「ムライボックス」の特徴である「MIDI チャネル番号の書き換え」という点で、MIDI メッセージの、 チャネル・ボイス・メッセージおよびチャネル・モード・メッセージ(0x80 〜 0xEF) システム・コモン・メッセージおよ…