スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。

【備忘録】dsPIC33FJ32MC202によるSDカードアクセス

とりあえず「ぷちFatFs」を使用。
FATファイルシステムのデータはリトルエンディアン、MPLAB C30もリトルエンディアン。
ChaNさんのHPにおいてあるpic24F用のサンプルブロジェクトを使用。
ピンアサインのみ調整して使用。

【備忘録】今更ながらMPLAB IDEのworkspaceについて

備忘録。

dsPIC33FJ32MC202を用いてdsp関数を用いる際のworkspaceの構成はこちら。
tools.hというファイルは私が勝手に作ったもので、絶対必要なわけではない。
dsp.hとかはデフォルトならばC:\ProgramFiles\Microchip\mplabc30\v3.30の辺りにこれらのファイルはあるはず。
workspace

【備忘録】dsPIC33FJ32MC202のUARTについて

備忘録

dsPICのDSP関数の能力の凄さについて。
浅草ギ研製のCMOS-EYEというカメラを用いて画像データをdsPIC内部に取り込もうとしていた際に起きた落とし穴について。

DSP関数を用いてマイコン内部で画像処理を行うプログラムを書いて、シミュレーターでテストしたところ処理速度が33倍になった。
おそろしや、DSP・・

CMOS-EYEを用いてシリアル通信経由で画像データを取得しようとしていたが、その画像データを用いて画像処理が行えなかった。
デバッグの結果、dsPIC側のRxのバッファがオーバーフローしていた。
よーーーくデータシートを見ていると• 4-deep FIFO Receive Data bufferという記述がある。
つまり、5個目以降のデータがオーバーフローしていた。

【備忘録】dsPIC33FJ32MC202のデータメモリ

備忘録

例えば配列として、
int I[300],T[300];
と宣言するとデータメモリ領域の0x800以降にI[0]のデータ領域が確保される。
このデータメモリの領域は2KByteで、main関数外部などでスタックが多く使われるとメモリエラーを起こしてmplab sim上でも誤作動を起こす。
int = 2KByteなので配列のバイト数合計が2KByteを超えるようであれば、もちろんだがエラーになる。
コメントアウトの有無でもたまに誤作動を起こすが原因不明。

MicroChipにより用意されているdsp関数において、乗算(VectorDotProductなど)は16bit×16bitの乗算結果がアキュムレーターという仮想レジスタ(スタック?)に保存される。
全ての計算が終了後、アキュムレーター内の値がビットシフトされ16bitの値として出力される。
この乗算がなかなかくせもので、基本的には浮動小数点の計算のみを想定しており、さらに何も考えずに使うと(-1.0〜1.0)同士の掛け算となる。
0x0000 = 0.0
0x0CCC = 0.1
0x7FFF = 1.0
0x8000 = -1.0
0xFFFF = ほぼ0に近いマイナス値
というような対応。
VectorDotProductなどに代入する値(配列)をビットシフトしておけば調整可。
アキュムレーターは40bitなのでそうそうオーバーフローしない。
紹介

MINORU

Author:MINORU
趣味:
ゲーム
マンガ
アニメ
電子工作
・・・はい、オタクです。
申しわけない程にオタクです。
PICマイコンとかArduinoの記事を書いてく予定

カテゴリ
最近の記事
最新コメント
月別アーカイブ
天落予報

-天気予報コム- -FC2-
カウンター
リンク
ブロとも申請フォーム

この人とブロともになる

PSPo2ブログランキング
PSP2・攻略ブログ
FC2ブログランキング

FC2Blog Ranking

RSSリンクの表示
Powered By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ