PICを消去も書き込みできない子にしてしまった
やってしまいました。
なーんも考えないで参考コードをコピペコンパイル書き込みしたが最後、EraseもProgrammingもできない子になってしまいました。
私の環境は PIC12F675 + PICKIT4 ですが、10年以上前から同様の問題に関する質問が見つかるのでデバイスに関わらず共通の罠なんだと思います。
この状態になってしまうのは、CONFIGレジスタの設定を "内部クロック + /MCLRピンOFF (外部リセットを使わずにGPIOとして使用)" にしたFWを焼いた時です。
MCCが吐くコードだと以下の状態です。
#pragma config FOSC = INTRCCLK #pragma config MCLRE = OFF
なんでこうなるか
PICKITからReset制御ができないため、VPPの電圧がプログラミング電圧 (9V) になるまえにプログラムが走ってしまう (Resetが解除されてしまう)からと思われます。
復旧方法
step.1
/MCLRピンを9Vでプルアップする。
私は50kでプルアップしましたが10kでも良いと思います。
step.2
MPLABでPICKITからの給電に設定してFW書き込み。
これでPICが立ち上がる前に確実にVPPがプログラム電圧になるので、無事消去と書き込みができるようになります。
新しく書き込むFWでは必ず MCLRE=ON にしましょー