PICで気圧、温度、湿度計 by PIC18F4520 40ピン で 
SDカード記録 & RTC 対応 Air3!

PIC16F1939 40ピンでうまくいくと信じて色々やってみましたが、どうしても全ての機能を入れようとすると、データー用のSRAM領域が足りなくなってしまい、完成できませんでした。

ちょっと暇になったので、PICの在庫を整理していると、PIC18F4520 40ピンが有る事に気がつきデーターシートを見ると、なんとPIC16F1939は元々PIC18F4520とピンコンパチブルであり、しかも、
PIC18F4520のSRAMは、PIC16F19391.5倍の1.5Kバイトもあるのです。

でも3.3Vで18F系は使えないのでは?むかし、PIC18F2550で苦労しましたからねぇ。。

おお〜!PIC18F4520は動作電圧が2.0V〜5.5Vになってます。「ビンゴです!」。
PICを16F1939から18F4520へ単純に差し替えるだけでハードウエアはそのまま使えると云う訳です。便利だなぁPICって!

問題はコンパイラーのC18とHI-TECH C の互換性でした。と云うよりも、C18やC30はどうも使い難くて。。XC8でPIC18をサポートする様になっているので、これを機会にMPLAB IDEからMPLAB X IDE v1.51に乗換えて、XC8 v1.11でPIC18F4520をプログラミングしてみたら、これがうまくいきました。

PIC24FJ64GA004からの全ての殆ど全ての機能を移植する事が出来ました。

現時点で、PIC18F4520のフラッシュROM 56%、データーSRAM 68% の使用量です。まだ、余裕が有りそうです。(Dec. the 1st. 2012)


全ソフトウエアの公開は、SDカードの扱いの仕様が今一なので、もう少し使い勝手が良くなってからにするつもりです。
(1)SDカードを電源投入から挿入し無ければ、書込めない。
(2)途中でSDカードを抜くのには、書込み時を避けないといけない。(LEDで書込み時をモニターし、これが消えているときに抜かなければ、書込みエラーでハマる)
(3)SDカードの記録の途中から、書き足せない。必ず、先頭からになってしまう。

消費電流の測定もしてないなぁ?PIC18F4520ってどの位食うんだろうか?8MHz駆動で。
例によっていつになる事やら。。(Dec. the 4th 2012)

(1),(2) の件は、PIC18FもPIC24Fも概ね解消できました。いつSDカードを差し込んでも、抜いても、システム支障を来さないようです。PIC18F系のプログラムに誤りが見つかりました。SDのインサート信号と、SDのロック信号とが入れ子でした!ごめんなさい。そういった事も含めて、もっと厳密な検討を進行中です。

(3)は、SDカードの特定ファイルに記録を残さなければ出来ない。ここまで来るとプチFATを検討すべきかもしれない。(Dec. the 10th. 2012)
プチFATは、やはり比較的かなり大きなサイズのアプリケーションとなり、殆どのPIC16Fのプログラムメモリーサイズでは対応が不可能な上、PIC18Fでもかなりキツい事が今更にして判明しました。(Dec. the 14th. 2012)

(4)FAT12、FAT16での1セクタのバイトサイズは、今回512バイトに固定していますが、希に2GBのSDカードにおいて512バイトではない事があるらしい。そこで、SDカード毎にその最終物理アドレスを得て、それを超した場合には、データーの先頭アドレスから上書きが出来る様に直しました。 (Dec. the 19th. 2012)

 
18F4520

注意事項
General disclaimer
トッ プページへ

なお、当ホームページで公開しているデーター(写真、音声)等を個人の枠を超えて複製・転用する事はご遠慮下さいませ。
ご意見/苦情/ご感想はこちらまで