« 5月号のOSDサンプルソース「user_main.c」を読み解く | トップページ | 5月号の第6章「タイマ割り込みを使ったプログラミング」を改めて読み直す »

2008年6月29日 (日曜日)

PPG0の出力をヘッドホンで聴いてみる

前回エントリのOSD機能以外に、実はPPGも触ってみている。今回はインターフェース2008年5月号の第6章のサンプルをちょっと変更してPPG0の出力をヘッドホンに出力してみた。

記事を読むと、PPG出力にLPFをかませてスピーカを繋げば・・・というイメージ図が載っているのだが、単純にそれだけではNG。デフォルトではPPG出力は基板のコネクタには出力されないのでその設定が必要になる

記事のサンプルはコールバックでLEDのOn/Offをしているだけなので設定は不要。こーいうサンプルって作ったり、説明するのは楽なんだだけど初心者にとっては次へのステップアップが厳しいんだよね。イメージ図をつけるくらいなら、注釈で「PPG出力を外部出力する設定が必要です。手順はGPIOのサンプルと同様、P44を出力に設定します」と一言書いてあるだけで全然違うと思うのだが。

具体的には「6章 タイマ割り込みを使ったプログラミング」のサンプルのmain関数内でP35の設定を行った後(場所は無限ループに入る前ならどこでも可なはず)で以下のコードを追記

// P44の出力許可設定
IO_PORT.IO_PFR3.bit.PPGE0 = 1; /* P44汎用I/Oポート設定          */
IO_PORT.IO_DDR4.bit.P44 = 1; /* P44出力許可                   */

P44の設定がマクロ定義された構造体風の値のどれになるのかはハードウェアマニュアルでP44を見た時に「汎用入出力ポート」と書いてあったことから、P35を設定する方法を参考にあてずっぽうで書いてみた。

後は、デフォルトの400msecごとの割り込み設定の部分のコードを以下の様に変更

IO_PCSR0 = 0xC3;        /* PPG周期          =2.5ms       */
IO_PDUT0 = 0x61;        /* PPGデュティー50% =1.25ms       */

いわゆる「NHKの時報の音」である「ラ」の音を出そうと思ったけど周波数を400Hzと勘違い(実際は440Hz)orz。
さらに突っ込めば今回は矩形波だけど実際はサイン波。でもまぁ、音が出たのでよしとする。

Nec_0076
PPG0が出力されるのはCN1のP27。そこに簡単なLPF(C=0.047μF  R=100Ω)をかましてヘッドホンジャックを接続。カットオフ周波数は34kHzあたりで、サンプルの場合は多分、

IO_PCN0.bit.CKS  = 2;        /* 16分周 10MHz/2/4/64=78.125kHz */

の78kHzがカットされればいいはず(間違ってるかも)。この辺、手持ちの余り部品しかないのが痛いところ。

一応、携帯で撮影した動画もあるので載せておきます(USBで電源供給した瞬間から音がなります。リセットを押している間は停止)

「ppg.3GP」をダウンロード

|

« 5月号のOSDサンプルソース「user_main.c」を読み解く | トップページ | 5月号の第6章「タイマ割り込みを使ったプログラミング」を改めて読み直す »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2790/41658635

この記事へのトラックバック一覧です: PPG0の出力をヘッドホンで聴いてみる:

« 5月号のOSDサンプルソース「user_main.c」を読み解く | トップページ | 5月号の第6章「タイマ割り込みを使ったプログラミング」を改めて読み直す »