goo blog サービス終了のお知らせ 

-・-・ --・-  -・-・ --・-  -・-・ --・- 

不定期更新。電子工作オタクのメモなので、おもしろくないですよ。

コンパイルできない

2011-07-02 07:05:33 | ソフトウェア
LCDの表示確認をしようとしているが、strlenとusleepでundefined reference to `_strlen'とundefined reference to `_usleep'のエラーが出る。
#include <string.h>
#include <sys/unistd.h>
を書いているのに、おかしいな。

(2011/7/5 追記)
TOPPERS/JSPではstrlen, usleepとも実装されていないのかもしれない。
strlen関数は標準Cライブラリの実装にあったものを利用させてもらった。usleepはLCDの初期設定時のタイミング設定に使うだけなので、取りあえず一律にdly_tsk(1)を入れた。

複数SPIデバイスの接続準備

2011-06-23 23:05:35 | ソフトウェア
SPIインタフェースのLCDをつなぐ前にやっておく必要があったのが、SPIルーチンの汎用化だ。これまではCODEC専用でSPIを使っていたが、複数のSPIデバイスをつなぐには書き直す必要があった。
で、KOBANZAME SDKに入っているソースを見て、びっくり。SPIについては複数デバイスを考慮してあるし、パラメータのエラー処理まで、バッチリ入っているではないか。ソースもわかりやすく書かれているし、活用ハンドブックとEE-340を見ながら、SPIのほとんどが理解できたので(言い過ぎか)、codec_ad1836a.cのSPI部分の変更と、kzdev_spi.cのssync()をasm("ssync;")に変更しただけで、無事複数SPIが利用できるようになった(LCDの接続はこれから)。
KOBANZAME SDKはすごい!(感謝)

ビート音の原因がほぼ特定できた

2011-06-17 22:48:39 | ソフトウェア
ビート音はどうやらcodec_callback関数の中で、gainを上げすぎているのが原因のようだ。
out0_right[sample] = out0_left[sample] = ( (signal_i[sample]
- signal_q[sample]) <<16 ) << gain;
このgainを光学Encoderの割込みハンドラの中で、適当に最大では12ビットシフトさせていたが、3ビットシフトしたあたりからビート音というか発振音が聞こえる。そもそもAD1836AのVolumeは初期化の時点で
DAC_VOLUME_0 | 0x3ff,
DAC_VOLUME_1 | 0x3ff,
と、最大値にしてある。
<< 16というのは、フィルタ処理時に16ビットにしたものを元にもどす処理だから、問題はないはず。
OUT端子にイヤホンをつないで聞くと、音が小さいが、外付けにアンプが必要ということか。

位相差が0だった原因

2011-06-09 22:01:37 | ソフトウェア

dds.Sが生成するCOS波とSIN波の位相差が0だった理由がわかった。原因はWaveSpectraを動かしていたT社製PCのマイク入力の右チャンネルの故障だった。
3月に購入したばかりのWin7機だったが、本日修理の手配をした。ビート音の原因の追究が10日ほどできなかったが、酔漢さんが作成したddsのアセンブリ言語の勉強にはなった。