かなり放置していたdsPIC基板をひさしぶりに触ってみました
元々の目的どおりFFT処理を組み込んでみます。
12ビットA/D変換の取り込み動作が正常に動くことは確認できているので
これをタイマ0割込みで周期的に起動させることにします。サンプリング周波数は16kHzです。するとアンチエイリアスフィルタのcutoffは半分の8kHzとなるので
SCFに与えるその100倍の800kHzのクロックをタイマ3で生成します
サンプリング個数はRAMの空き容量の制限で64点となりました。
あとはdsPIC30用のDSPライブラリを呼ぶだけでとても簡単にできてしまいます。
1kHz、振幅0.5Vの矩形波を入力したところです。
左半分がスパン8kHzのFFT表示、右半分が生波形を描画しています
各要素を開平してベクトルの長さにすると振幅のスペクトラムになり、教科書どおり奇数次の高調波が見えてきます
縦軸を対数スケールにしたところです。自乗分はlogの前に出て係数になるので当然パワーでも振幅でも同じですね。DCオフセットがかなり目立っています