[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
本作では、C32環境のライブラリ(C標準ライブラリとペリフェラル関連)以外に、2つのライブラリ
を利用しています。
① Microchip Application Library [ここです]
② FatFs [ここです]
①Microchip Application Library(v2010-10-19)
これはソース配布形式のライブラリで、多くの機能が含まれています。
まだまだ進化途中のライブラリのようで、不備・不具合や、統合後の整理が不十分な部分も
あるようです。
本作では、本当に必要なファイルだけをプロジェクトに含めました。また、公開しているソース
にもそのまま同梱しています。
利用しているのは、TCPIP Stack と、Image Decorders の二つです。
・TCPIP Stack
手間をかけずに、ネットワーク機能を使う事が出来て大変便利です。
数多くある機能のうち、必要な機能だけを使っています。
(TCP/UDP, DHCPClient, SNTPClient, ICMPServer, Wi-Fi等)
MRF24WB0MAのドライバに相当するコードについては、WF_CS_TRIS マクロを定義すると、
TCP/IP Stack 内から関連関数を自動的に呼び出すようになっています。
・Image Decorders
JPG,GIF,BMP に対応するシンプル軽量な画像デコーダーです。
ソースは分かりやすいというか、ごく普通に書かれていて、つまり、早くするための工夫はされ
ておらず、パフォーマンス的にはあまり良くないです。
今作では、PICが80MHzなので救われています。
参考までに、オリジナルに対して加えた変更点を記しておきます。
(変更されることが前提となっているConfig系ヘッダは除きます)
TCPIP Stack の変更点
1) Tick.h/Tick.c を 32.768KHzX TAL用に修正
・#define TICKS_PER_SECOND を 32768ul に切り替える
・TickInit() の T1CONbits.TCKPS = 3; を削除して
T1CONbits.TCS = 1; を記述する
2) Tick.c 不具合修正
Tick.cには、TickGet()で取得した値がたまに未来の値になっているという不具合があります。
なので、短い時間に連続してTickGet()していると、前後関係の狂いが原因でおかしくなる場合
があります。こんな事のために結構悩まされました。これを修正するために、206行目の直後
「((volatile WORD*)vTickReading)[0] = TMR1;」
の次に
if(((WORD*)vTickReading)[0] >= 0xFFFEu)
continue;
を追記します。
3) Helpers.c でTimer1を使用させないようにする
・T1CON→HT_TCON
・TMR1→HT_TMR
・PR1→HT_PR
乱数生成のためにTimer1を使っているようです。使うタイマーを選べるようにして欲しいです。
ただ、実際は初期化時のみ使われるようで、通常は問題無いのかもしれません。
4) StackTsk.hにあるAPP_CONFIG構造体の networkType を、EZ_CONFIG_STORE
で条件コンパイル化しているのは誤りなので、#ifdefの外に出す。
本作では、起動時に設定をファイルから読み込んで適用するのみです。
よって、EZ_CONFIG_STORE は使用しません。
5) なぜかUART2しか想定されていないので、UART.h を編集する
#elif defined( __PIC32MX__ )
#define putrsUART1(x) putsUART1(x) ←この行を追加
#define putrsUART2(x) putsUART2(x)
#endif
本作ではUART1を使用します。
6) SNTP.c の修正(何もしなくても動くことは動きます)
・SNTPGetUTCSeconds()でループ式除算法を、通常の除算命令にする(PIC32用に最適化)
・NTP_SERVERを変数化して、動的に設定出来るようにする。
・クエリ間隔が短すぎると思うので長くしました。
NTP_QUERY_INTERVAL 10分→1時間
10分間隔で修正する必要があるでしょうか?1日でも十分そうですが。。
Image Decorders の変更点
1) バッファサイズ調整
JpegDecoder.h の MAX_DATA_BUF_LEN を 128 → 4096 にしました。
ただ、さほど早くはならないようです。
②FatFs(R0.08b)
何度かお世話になっています。軽量でいいですね。
本作では、基本型の定義が Application Library とかぶってしまうという問題が発生しました
ので、integer.h を少し編集して利用しています。
本体は公開ソースには同梱していませんので、各自導入してください。
【導入手順】
1) ff8b.zipをダウンロード する。
2) 展開後出てくるファイルのうち、integer.h と ffconf.h 以外の、3つのファイルをプロジェクト
のHoneyInfo/Source/Main/FatFs ディレクトリにコピーして下さい。
公開ソースに含まれている integer.h と ffconf.h は、本作用にポーティングしてあるので
上書きしないようにして下さい。(オリジナルのものは使いません)