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

PSoC 4200 Prototyping Kit (7)

前回の記事の最後の式を再掲します。 n = (a2 - a1) · m1 + a1 この式を見ると (a2 < a1) の場合に右辺第 1 項が負となり、 n の値も負になることが分かります。 + a1 の項も効いてきそうな気がしますが、前回も述べたように、(a2 - a1) を 16 ビット左シフ…

PSoC 4200 Prototyping Kit (6)

中国剰余定理自体の証明や、一般的な解法については省略し、今回の応用に関する解法のみを説明します。 その前に「合同式」について触れておきます。 以降、特にことわりのない限り変数や定数は整数であるとします。 a ≡ b (mod m) と書いて「m を法 (modulu…

PSoC 4200 Prototyping Kit (5)

「中国剰余定理」(Chinese Remainder Theorem) は古代中国の算術書「孫子算経」に由来するもので「孫子の定理」と呼ばれることもあります。 「Chinese」は「中国の」とか「中国式」とか言うよりも、むしろ「(名前の分からない) 中国人の」といった意味合いで…

PSoC 4200 Prototyping Kit (4)

PSoC4 の TCPWM コンポーネントの仕様を見ていて、「中国剰余定理」を使って 16 ビット・タイマ・カウンタを 32 ビット化し、キャプチャ機能により入力信号の周期を求めるレシプロカル周波数カウンタを作ろうと思い立ちました。 中国剰余定理の説明は次回以…

PSoC 4200 Prototyping Kit (3)

今回はハードウェアでスイッチ・イベントを発生させる場合の説明です。 TCPWM コンポーネントの設定ダイアログで下のように「switch」-「Present」チェック・ボックスと「Compare」-「Swap」チェック・ボックスをオンにします。

PSoC 4200 Prototyping Kit (2)

多くのマイコンの PWM 回路ではコンペア・レジスタは「ダブル・バッファ」構成になっています。 もちろん、その理由はダブル・バッファ構成でないと問題が生じるからです。 簡単のため、カウンタがアップ・カウント・モードでの PWM 回路の原理的な図を下に…

PSoC 4200 Prototyping Kit (1)

以前から Cypress の PSoC (Programmable System-on-Chip) シリーズには興味があったのですが、PSoC1 の出始めの頃の、プログラマ約 1 万円、別売 C コンパイラ約 3 万円という「割高」なイメージがあって、手を出せずにいました。 最近では「廉価版」の PSo…

USB-MIDI (13)

今回は USB-MIDI コンバータの MIDI IN 側の処理の話です。 MIDI OUT 側に比べて処理は複雑になります。 それは、 ランニング・ステータスに必ず対応する必要がある 入力される MIDI メッセージに対応して MIDI パケットを組み立てる必要がある USB ホスト側…

USB-MIDI (12)

今回は USB-MIDI コンバータの MIDI OUT 側の処理の話です。 USB-MIDI イベント・パケットから直接に内蔵音源をドライブするのではなく、MIDI のシリアル・データに変換して MIDI 端子から出力するという機能に限れば、(MIDI IN 側に比べて) その処理は非常…

USB-MIDI (11)

システム・エクスクルーシブ・メッセージ (System Exclusive Message) はステータス・バイト 0xF0 に始まり 0xF7 (EOX: End Of eXclusive) に終わる、MIDI メッセージでは唯一の可変長のメッセージです。 USB-MIDI イベント・パケット内のペイロードは 3 バ…

USB-MIDI (10)

MIDI ケーブルの中を流れる MIDI データは、「バイト・オリエンテッド」なビット・レート 31.25 kbps、データビット数 8、パリティなし、1 ストップビットの調歩同期形式です。 一方、USB を介してやりとりされる MIDI データの形式は「バイト・オリエンテッ…

USB-MIDI (9)

前回の規格書付録 B のディスクリプタと同等のディスクリプタを。C 言語の初期値付き配列の形で表現したものを下に示します。 LPC11U35 を使った FM 音源プログラムの USB-MIDI 機能部分で、このディスクリプタを使ってコンパイルして MIDI OUT 機能が正常に…

USB-MIDI (8)

MIDIStreaming サブクラスの規格書[*1]の付録 B に示されているディスクリプタを元に解説を加えます。 規格書は、「usb.org midi」 を検索キーワードとしてググればすぐに見つかります。 ここで示すディスクリプタは、 2 箇所を除いて規格書の付録 B と同じ…

USB-MIDI (7)

MIDIStraming 要素の MIDI ジャックや「エレメント」のトポロジーは、実際にはクラス固有ディスクリプタで表現されます。 MIDIStreaming の場合 (AudioStreaming なし) のコンフィギュレーション・ディスクリプタ(群) の構成図を左に示します。 先頭に「Std.…

USB-MIDI (6)

MIDIStreaming インターフェース・サブクラスの例として、規格書の付録 B "Example: Simple MIDI Adapter (Informative)" のディスクリプタで示されている (外部) MIDI 入力 1 系統、(外部) MIDI 出力 1 系統の最も基本的な USB-MIDI 機能を実現するトポロジ…