2013-01-01から1年間の記事一覧

LPC810M021FN8 (8) -- SCT を PWM として使う (5)

今回は、 NXP 社の表現で「Double Edge PWM mode」 STmicroelectronics 社の表現で「Center Aligned PWM mode」 と呼ばれる、デューティーに応じて PWM 波の立ち上がり/立ち下り両エッジが互いに反対方向に変位して「重心位置」を不変に保つ方式の話です。 …

LPC810M021FN8 (7) -- SCT を PWM として使う (4)

SCT の「イベント」は、 タイマ・カウント値とのコンペア・マッチ成立 入力 (CTIN) あるいは出力 (CTOUT) の、あらかじめ選択しておいた H レベル/L レベル/ライズ・エッジ/フォール・エッジのいずれかの発生 の 2 種の条件を、下のように組み合わせた マッ…

LPC810M021FN8 (6) -- SCT を PWM として使う (3)

LPC8xx に搭載されている SCT (State Configurable Timer) を PWM として応用する方法について述べます。 「ステート」は全く使用しなくても PWM は実現できますし、「キャプチャ」機能は PWM への応用には関係しないので、それらの機能については深入りしま…

LPC810M021FN8 (5) -- シリアル ISP (3)

リセット時に UART ISP 起動フラグと干渉しないように、外部クロック・オシレータの出力をアクティブにするのを遅らせる方式について追加の説明をします。 ブート ROM のプログラムが P0_1 をサンプリングして UART ISP の起動を判断するタイミングを外部か…

LPC810M021FN8 (4) -- SCT を PWM として使う (2)

LPC810 用に、毎度おなじみ DDA (Digital Differential Analyzer) アルゴリズムを使った sin / cos 波発生プログラムを作りました。 3 番ピンと 4 番ピンから PWM 波出力されるので、LPF を掛ければ音として聞くことができます。 正弦波の周波数は CPU クロ…

LPC810M021FN8 (3) -- SCT を PWM として使う (1)

今回は SCT (State Configurable Timer) を PWM として使うための初期設定プログラムを示します。 SCT モジュール自体や、プログラムの詳しい説明は次回以降に回します。 プログラムの開発環境としては、トランジスタ技術 2012 年 10 月号付属の DVD-ROM に…

LPC810M021FN8 (2) -- シリアル ISP (2)

LPC8xx では「システム・クロック」として、 12 MHz 内部 RC オシレータ ウオッチドッグ・タイマ用内部 RC オシレータ (9.3 kHz 〜 2.3 MHz) 外付け水晶振動子用 (内蔵) オシレータ 外部クロック入力 および (ウォッチドッグ・オシレータを除く) クロック源…

LPC810M021FN8 (1) -- シリアル ISP (1)

以前から発表されていたものの、やっと最近になって容易に入手できるようになった NXP 社の 8 ピン DIP の Cortex-M0+ マイコン LPC810M021FN8 を手に入れました。 当面の主な用途としては、MIDI 入力のみの「無限音階オルガン」を考えていますが、LPC1114FN…

FPGA 版 FM 音源 (26) -- EG シミュレーション (2)

FPGA (無印 Cyclone) 上にインプリメントした回路のトップ・レベルのブロック・ダイアグラムを下に示します。 実際には 2010 年 12 月 2 日の記事 (→こちら) のトップ・レベルの回路図に追加して実現しています。 もとの回路のゲート信号発生用カウンタと、…

FPGA 版 FM 音源 (25) -- EG シミュレーション (1)

約 3 年間放置していた「FPGA 版 FM 音源」を再開しました。 アタックとディケイのみを実装した EG を Verilog-HDL で書いて「ModelSim」でシミュレーションを行い、以前の記事の C プログラムでの実現と同様の結果を得ました。 アタック/ディケイ・タイムが…

無限音階オルガン (1)

220 円の PIC32MX による USB MIDI ホストと組み合わせるのにふさわしいローコストな音源を、ふたつの「はやり」 無限音階オルガン MIDI からの電源供給 に乗っかって作成することにしました。 ターゲットのチップとしては、110 円の LPC1114FN28/102 を考え…

PIC32MX220F032B USB MIDI ホスト (15)

PIC32MX USB MIDI ホストの基板を「箱入れ」しました。 と言っても、従来の基板ではなく、ケースにおさめるための基板を新たに作成しました。 メインのチップの PIC32MX220F032B が 220 円なので、今回は各パーツの単価が 220 円を超えないようにという「縛…

アナログシンセの VCO ブロック (60) -- マルチ出力アンチログ回路の測定 (9)

今回は、現在実装されている 2 つの VCO 間の「混変調」というか「クロストーク」というか、VCO 間相互の影響について調べてみました。 結果としては、問題になるレベルではありませんでした。 トランジスタ・アレイ TD62507 では、16 ピン・パッケージの中…

アナログシンセの VCO ブロック (59) -- マルチ出力アンチログ回路の測定 (8)

これまでは、 ピンポイントの温度における MIDI ノート番号全体に渡る特性の測定 広い温度範囲に渡るオクターブ・スパンの特性の測定 を、それぞれ行ってきましたが、今回は 広い温度範囲での全 MIDI ノート番号に渡るピッチ誤差特性 を リワインド型 VCO リ…

アナログシンセの VCO ブロック (58) --定番アンチログ回路の直列エミッタ抵抗誤差補償

Minimoog の VCO の「高域補償」は、後期型回路では「Franco の補償」を使っていますが、前期型回路ではアンチログ出力電流を検出して CV サミング・アンプにフィードバックする方式になっています。 この方式の回路を LTspice でシミュレーションして、アン…

アナログシンセの VCO ブロック (57) -- マルチ出力アンチログ回路の測定 (7)

前回の測定後も測定は続行しており、計 56 時間 (2 日と 8 時間) に渡るデータを収集しました。 温度変化の幅は、最低 23.9 °C から最高 33.6 °C までの 9.7 °C となりました。 9 月 22 日 09 時ごろに測定開始した以降の経過時間と室温とのグラフを下に示し…

アナログシンセの VCO ブロック (56) -- マルチ出力アンチログ回路の測定 (6)

オクターブ・スパン誤差の温度変化の測定を始めました。 今回、実験回路は Arduino の「シールド」の形で作成したので、必要なコントロールはすべて Arduino で行い、シリアルで接続する PC は測定結果のロギングだけに使っています。 とりあえず、室温 27.5…

アナログシンセの VCO ブロック (55) -- マルチ出力アンチログ回路の測定 (5)

残りの 1 系統にリセット型 VCO を実装して、測定を行いました。 アンチログ出力トランジスタから VCO までの部分の回路図を下に示します。 左側が今回追加したリセット型 VCO です。

アナログシンセの VCO ブロック (54) -- マルチ出力アンチログ回路の測定 (4)

PWM CV マルチプレクサ + LPF + アンチログ出力トランジスタ部の回路図を下に示します。 LPF 部は OP アンプを 1 個使用した 3 次アクティブ・フィルタの構成になっています。 OP アンプは、ありあわせで MOSFET 入力の NJU7032 (JRC 製) を使用しています。…

アナログシンセの VCO ブロック (53) -- マルチ出力アンチログ回路の測定 (3)

Spice の Ebers-Moll モデルでは、バイポーラ・トランジスタが大電流領域において理想 PN 接合の特性からズレてくる効果を、理想 PN 接合による「真性トランジスタ」の外部に直列抵抗を接続することにより表現しています。 直列抵抗の「実体」としては、端子…

アナログシンセの VCO ブロック (52) -- マルチ出力アンチログ回路の測定 (2)

今回は、CV に対する VCO 出力周波数のピッチ誤差の測定結果を示します。 PWM による DA でアナログ CV を作り出すわけですが、今回は ATmega168/328 の 8 ビット・タイマである Timer2 を使って PWM 波を発生させることにしました。 Timer0 は Arduino のシ…

アナログシンセの VCO ブロック (51) -- マルチ出力アンチログ回路の測定 (1)

マルチ出力アンチログ回路で、マルチプレクサ → LPF → アンチログ → VCOの系統をとりあえず 1 系統のみ実装した基板を作成しました。 複数出力間の干渉のようすを調べるために、最終的には 2 系統を実装するつもりです。 3 系統以上を実装する予定はありませ…

アナログシンセの VCO ブロック (50) -- ATtiny13 版プログラム (3)

ATtiny13 を含む多くの AVR マイコンと、ATtiny10 とでは、入力ポートのプルアップの設定に関する設定方法に差があり、それに対応して ATtiny13 用プログラムではディスチャージ用の 3 ステート出力操作を変更する必要があります。 また、ATtiny10 用のプロ…

アナログシンセの VCO ブロック (49) -- ATtiny13 版プログラム (2)

ATtiny13 版のプログラム・リストを下に示します。 ATtiny13 ではコンパレータ入力として内部バンドギャップ・リファレンス (約 1.1 V) を選択できるので、そのサポートも付け加えてありますが、動作確認はしていません。 外部クロックへの切り替えは、プロ…

アナログシンセの VCO ブロック (48) -- ATtiny13 版プログラム (1)

約 1 年前 (2012 年 6 月 29 日) に書いた記事 http://d.hatena.ne.jp/pcm1723/20120629 のマルチ出力アンチログ回路の温度特性を調べる実験の準備を始めました。 VCO 回路の簡略化および高精度化を目指して、マイコンによる「ディジタル・サイリスタ」を使…

ICSP 接続で PIC32MX のフラッシュに書き込む (14)

LPC1114 / NUC120 / ATmega / Arduino 共用のソース・パッケージと、Arduino のスケッチをアーカイブしたものを公開しました。(→ こちら) ファイル名は。LPC1114/NUC120/ATmega/Arduino 版、Arduino スケッチ版それぞれ、 pic_icsp-20130722.zip icsp_arduin…

ICSP 接続で PIC32MX のフラッシュに書き込む (13)

Arduino ライブラリを使わない「素」の AVR ATmega 用プログラムに「空っぽ」のメイン・スケッチ・ファイルを追加し、「形式上」 Arduino スケッチ化することができました。 (Arduino 1.0.5 のみ確認、他のバージョンでは未確認) 最も簡単には、 20130706 版…

ICSP 接続で PIC32MX のフラッシュに書き込む (12)

LPC1114 / NUC120 / ATmega 共用のソース・パッケージを公開しました。(→ こちら) ファイル名は pic_icsp-20130706.zipです。 Atmega 版のソース・プログラムは C 言語で記述されたプログラムとなっており、Arduino の「スケッチ」としては実現できていない…

ICSP 接続で PIC32MX のフラッシュに書き込む (11)

移植第 2 弾として、Atmel AVR ATmega328P/168/88 用のプログラムを作り、動作を確認しました。 フラッシュ 8 K、RAM 1 K におさまったので、ATmega88 でも動作します。 「ハードウェア」としては、専用に回路を作るほかに、既存の「Arduino」(互換ボード) …

ICSP 接続で PIC32MX のフラッシュに書き込む (10)

LPC1114 / NUC120 共用のソース・パッケージを公開しました。(→ こちら) ファイル名は pic_icsp-20130619.zipです。