Thursday, May 03, 2007

PSoC DELSIG8

 世間的には連休後半戦突入らしい、私は仕事が入るわ連休中に従兄弟が泊まりに来るわで落ち着かない。これまで少しづつ少しづつやってきた夏コミネタの仕込みや実験を連休を利用してまとめて進めたかったのだが…

 やれるとことをやっておこう、というわけで、先週末にいじっていたのが PSoC のΔΣ型ADコンバータのDELSIG8モジュール。数ある PSoC の ADコンバータの中で DELSIG8 を選んだのは、トラ技2006年・3月号のPSoC AMラジオ(AGC用)や、ワンチップ電波時計で使われていて、受信機に応用するには参考になる点が多いと思ったからだ。

 前述した記事を参考にしつつ、PSoCEVAl1で実験。実際に使う段になって判ったのだが、外部からの入力となると、port2 の pin しか使えない。とりあえずLCD を本来のコネクタではなくミニブレットボードに挿して、LCD はport 1を使って制御するようにして port2 をDELSIG8用に空けて実験することにした。

 変換結果をLCDに表示するようにして、最初は可変抵抗の出力を、その後iPodの出力を入れてみたが それらしい値が出てきたのでとりあえず満足。面白いと思ったのは、変換結果を取得する方法をpollingではなくて割り込み、それもC言語で行う場合の処理。前述の PSoC AMラジオのプロジェクトのソースを読んでみると、明らかに割り込み処理関数があるのに #pragma interrupt_handler の行がみあたらない。だが生成された DELSIG8 のコードを読んで納得。ユーザー側で引数をスタックにpushしてからCの関数を lcall して、その後でスタックポインタの辻褄を合わせるようだ。なるほど。

 

Labels: ,