PSoC1 (1)

 1 か月ほど前、秋葉原に行った際に、秋月の店頭で「サイプレスプログラマー/ 開発セット」がジャンク扱いで 2000 円で売られていました。
 中身は、

  • MiniProg1
  • USB ケーブル
  • MiniEval1 ボード
  • CY8C29466-24PXI
  • CY8C27443-24PXI
  • ソフトウェア CD

で、これは、すでに廃版となっている「CY3210-MiniProg1」キットの中身と同等のようです。
 現行の PSoC5LP Prototyping Kit が秋月価格で 1500 円で買えるのに比べると、安くなっているとは言え、微妙に高い気もしますが、PSoC1 のスイッチト・キャパシタ・フィルタには関心があるので買って帰りました。

続きを読む

dsPIC33FJ64GP802 (16) --- 1/12 オクターブバンド・フィルタを使った「グライコ」風表示 (1)

 1/12 オクターブバンド・フィルタを多数並べて、オーディオ用グラフィック・イコライザの「バー」風の表示をさせてみました。
 表示は、下の記事の Adafruit 1.8 インチ TFT LCD シールド互換のシールドを装着した Arduino で行い、1/12 オクターブバンド・フィルタを実装した dsPIC33FJ64GP802 とは I2C で接続しています。

1.8 インチ TFT LCD シールド (2) - シンセ・アンプラグド

 表示の様子を下に示します。 (写真をクリックするとモーション GIF による動画が表示されます。)

続きを読む

dsPIC33FJ64GP802 (15) --- 無償で使えるフィルタ設計アプリケーション (2)

 前回示した

ディジタル・フィルタ設計プログラム (IIR_Design、FIR_Remez、FIR_Kaiser) — (三上直樹著・CQ 出版「はじめて学ぶディジタル・フィルタと高速フーリエ変換」のサポート・プログラム)

http://www.cqpub.co.jp/hanbai/books/30/30881.htm

は、上記のリンクから飛べる CQ 出版の web サイトからダウンロードすることができます。

続きを読む

dsPIC33FJ64GP802 (14) --- 無償で使えるフィルタ設計アプリケーション (1)

 libdsp の IIR フィルタ関数では、フィルタ係数の生成には「dsPIC FD」(dsPIC Filter Designer) を使用することが前提になっています。
 dsPIC FD にはフル機能版と機能限定の廉価版 (dsPIC FD Lite) がありますが、両者ともに「有償」で「無償版」はありません。
 それ以上に問題なのは、現在 dsPIC FD は Microchip では取り扱われていないようで、他の代替手段を考えなければなりません。
 現在、「無償」で使えるディジタル・フィルタ設計アプリケーションとして、おもに次のようなものがあります。

続きを読む

dsPIC33FJ64GP802 (13) --- IIR フィルタ関数と Yデータ・メモリ・アクセス (2)

 IIR フィルタ関数が範囲外の Y データ・メモリをアクセスすることで発生するドレス・エラーを防ぐ方法には、大きく分けて次の 2 種類があります。

  • 「範囲外」アクセスの対象が RAM 非実装領域とならないように、RAM 中にダミーの変数を定義して「範囲外」アクセスがその「実在」する RAM に対して行われるようにする。
  • IIR フィルタ関数自体を「改造」して、範囲外アクセスが発生しないようにする。

 後者のほうが本質的な解決策ですが、場合によっては性能低下を招く可能性もあり、ここでは、主に前者の方法を示します。

続きを読む

dsPIC33FJ64GP802 (12) --- IIR フィルタ関数と Yデータ・メモリ・アクセス (1)

 dsPIC の libdsp に含まれている IIR フィルタ関数 (IIRCanonic()、IIRTransposed()) では、割り当てられた Y データ・メモリの範囲外へ (不要な) アクセスを行っているため、場合によってはプログラムの停止、リセットの繰り返しなどを生じるおそれがあることが判明しました。
 ただし、対策は容易に行えます。
 FIR() 関数については範囲外のアクセスはなく、問題は生じません。 その他の FIR / IIR 系のフィルタ関数については調べていません。

続きを読む

dsPIC33FJ64GP802 (11) --- DSP 命令と DSP ライブラリ (9)

 IIRCanonic() 関数と IIRTransposed() 関数を使ったプログラムの断片を下に示します。 フィルタ係数の配列の詳細は 2018 年 10 月 10 日付けの記事 (→こちら) に記載しています。
 WaveSpectra による特性測定のために使ったプログラムでは、ふたつの 1/12 オクターブバンド・フィルタの両方とも IIRTransposed() で実現していますが、以下に示すプログラムでは 880 Hz は IIRCanonic()、932.33 Hz は IIRTransposed() を使っています。

続きを読む