デフォルト設定の罠

Microchipは我々を陥れるため、思わぬ設定をデフォルトにしています。 入門用といわれるPIC16F84Aの上位互換品であるPIC16F648A。 互換性があるとおもってそのままソースをコピーすると罠にはまります。 まず、デジタル・アナログ兼用のRA0/AN0ピンなどにおいて、 アナログ入力がデフォルトになっています。 普通に考えて最も良く使う設定はデジタルI/Oです。 だれだってデフォルトはデジタルI/Oだと思います。僕もそう思います。 しかし、現実は無情。何もしないとアナログ入力(アナログコンパレータ。ADコンバータではない)なのです。 HI-TEC C Pro-LITEの場合、
CMCON = 0x07;
をいれてアナログコンパレータを無効にすることでRA0〜RA3がデジタルI/Oとして使えるようになります。

PIC16F84AからPIC16F648Aへの移植にはもう一つの罠があります。 そのままソースをコピーすると、RB4ピンが使えません。 これは、PIC16F648AにはLVP(Low Voltage Programming)モードすなわち、 低い電圧でプログラミングを行なえるモードがあり、それがデフォルトで有効になっています。 RB4ピンはLVP用のプログラム用入力PGMピンと兼用になっており、なにもしないとデジタルI/OであるRB4としては使えないのです。 HI-TEC C Pro-LITEの場合、下のようにコンフィグ設定でLVPDISをいれてLVPを無効にすることでRB4が使えるようになります。
__CONFIG(UNPROTECT & BORDIS & PWRTEN & WDTDIS & INTIO & MCLRDIS & LVPDIS);

PIC16F84Aと並ぶ入門用PICとして、8ピンのPIC12F675があります。 これにもアナログ・デジタル兼用ピンがあります。 これもやはりアナログ入力がデフォルトになっています。 しかもアナログ入力には2種類あります。 すなわち、ADコンバータ入力と、アナログコンパレータ入力です。 この両方を無効にしないとデジタルI/Oとして使えません。 HI-TEC C Pro-LITEの場合、以下のようにして無効にします
ANSEL = 0x00;
CMCON = 0x07;

デフォルト設定の話から外れますが、もう一つピンの名前についての罠があります。 PIC16F648AのAN0ピンアナログコンパレータ入力を指します。 一方PIC12F675のAN0ピンADコンバータ入力を指し、アナログコンパレータ入力のピン名はCINです。 つまり、同じAN0という名前なのに違う機能を意味します。 PIC16F648AにADコンバータはありません。 ここまでくるとむしろ、詐欺にさえ思えます。 僕は思いっきり勘違いしてADコンバータがあると思ってPIC16F648Aを買いました(-_-;)

Top