PIC16系のUSARTとMPLAB/PICCのこと(3)
■ ICD2でICD
「ICD(In-Curcuit Debug)が出来なくて何がICD2だ!?」と思うのだが、単なるPICライタに成り下がってしまった私のICD2(のclone)だ。
ところが、16F877/16F877Aでは不可能だったICDが、16F887では出来るのである。
注意すべき点は、config(fuse)で
・LVP(Low Voltage Programming)をoffにしておくこと
・CP(Code Protech)をoffにしておくこと
の2点だけである。
ICD2(のclone)でdebugモードに入ることが出来た。
■ ラッチアップに気をつけろ
100個も数珠つなぎにするので部品点数をなるべく減らすため、リセット回路もなく、MCLR(リセットピン)にはFT232RLモジュールのVcc直つなぎである。ところがこれだと5回に一回ぐらいPIC自体が動かない。プログラム自体が走っていないようだ。
全く原因は調べてはいないが、
・リセットするためにはMCLRはいったんLにしなければならない
・ラッチアップ(RxDからMCLRのほうに電流が回り込んでいる)か?((ラッチアップって何?
http://www.geocities.co.jp/HeartLand-Tachibana/9059/otasuke/lup.htm)))
のどちらか(or 両方)だと思った。リセット回路はつけたくないし、pull-downの抵抗も部品点数を増やしたくないのでつけたくない。
MCLRみたいなリセットピンが諸悪の根源なので、これを無くしてしまおう!と思った。
16F887ではこれを入力に設定できる。
__CONFIG(CP /*PROTECT*/ & CPD & PWRTEN & XT & /*WRTEN &*/ DEBUGDIS & LVPDIS & BORDIS & WDTEN & MCLRDIS);
// MCLRDIS = MCLR functions as IO
これでFT232RLモジュール接続時にPICが動かないという現象はなくなった。
「それじゃ駄目だよ」というツッコミはコメント欄のほうにお願いしたい次第で…。
■ テスターの電池が無くなった
秋月で一番安いテスターを使っていたのだけど、ちょうどテスターの電池がなくなった。なかを開けてみたら、12V A23という電池が使われていた。
この電池は同じく秋月で50円で売られていることをいまさら知ったのだが、50円の電池を買うために送料1000円ぐらいかかるのはいかがなものかと…。(A23は、ダイソーなどの100円ショップで売られているようだが。)
秋月でテスターを買う時は一緒にこの電池も買っておきましょう、ということで。
■ 16F887は超お勧めのまとめ
以前にも書いたが16F887は超お勧め。
・秋月で250円と大変低価格
・35(36?)pinもI/Oがある
・アナログコンパレータ2基搭載
・USARTの拡張版であるEUSART搭載
・LVP対応
・ソフトで校正可能な8MHzから31kHzまで対応可能な内蔵RC発振器
・ピンごとに設定できるweak pull-up
・ICD2でのICDに対応。
・スタンバイ電流 50 nA @ 2.0V, typical と超低消費。
・通常時の電流 220μA @ 4 MHz, 2.0V, typical もかなり少なめ。
・PICC Lite(が対応している数少ないデバイスのうちの一つ)でCで開発できる
・MCLRを入力に設定できるのでリセット回路不要(?)
書き込みに対応しているライタが少ないのが難点だけど、PICkit2か、ICD2のcloneを購入してねってことで…。
■ PIC の勘所(コツ)
・PIC の勘所(コツ)
http://einst.hp.infoseek.co.jp/knowhow.html
「そうそう。これ、ハマったよな〜」とか思いながら読ませていただいた。知らないことも結構あった。
16F系を触っている人は是非読まれることをお勧めする。