MPASM Technic – PPS Lockの動き

PIC18FではPICのPinにハード機能を割り付けるPPSという機能がある。
PPS機能にはLOCK機構があり、セットするとPPS機能が変更ができなくなる。

PPSをLockする場合、マニュアルではシーケンスがあると記述があるが、うまく機能していないようである。

シーケンスは55h,AAhを先行して書き込んだあとビットをセットするものであり、ハード的にデータをコンペアしてEnableを出す、数十年前からある手法ではある。

結論から言うと、55h,AAhにかかわらず、PPSLOCKビットは動作するようである。
LOCKすると、PPSの設定は無効となる。
55h,AAhの書込み先はPPSLOCKレジスタとなっているが、これについてはLockビットと同じアドレスへの書き込みということ自体疑問である。
ANではPPSLOCKレジスタではなく、EEPROMのLOCKレジスタとなっている。
いずれも試したがLOCK自体は有効で、シーケンスの有無による変化はない。

推測ではあるが、 シーケンス書き込みが別のアドレスなのかもしれない。

また、リセットで初期値に戻ってしまうようである。
本来PPS設定はEEPROMに保存され、電源ON直後から自動的に有効になってほしい機能である。
Power On Reset後のポートが切り替わる(リセットはHiZ)までの極短い間ではあるが、電源が立ち上がったあとでポートの出力データにごみが入ってしまうことになる。

 

カテゴリー: MPASM, PIC, PIC18F, PIC18F46K40, PIC18FxxK40 タグ: , , パーマリンク