MPLAB-X + PIC12F675は使えない・・・・

ちょっと治具を簡単に手持ちのPIC12F675で作ろうとしたのですが、ハマってしまいました。
今回の環境はMPLAB-X + XC8を使ってみようと思ったのですが、これがハマりの元凶です。

まずはLチカで環境に問題がないことを確認しようとしていたのですが、そこで引っかかりました。

Lチカプログラムはこんな感じで、何の変哲もありません。

101

しかし、コンパイルして動かそうとすると動きません。
いろいろ設定を疑ってみたものの、うんともすんとも言いません・・・・。

プログラムメモリの内容をディスアセンブル表示させると、先頭は

Screenshot-1

というような感じでした。001番地にCALL 0x3FFがありますが、これは確か3FF番地にはRETLW命令が置いてあって、Wレジスタにクロック周波数の補正値を入れて戻ってきて、その後、OSCCALレジスタにWの値を書き込む(上記で言うと、レジスタバンクを1に切り替えてからT1CONのアドレスに書き込む)ことで、周波数を補正していたはずです。

しかし、不安になって、WindowsでPickit2でROMの中身を吸い出して見たところ・・・・・3FF番地の値が0000(NOP)になってました。これでは001番地のCALL命令で無限ループになるので動くわけがありません。

Pickit2にはクロック周波数補正値を回復する機能があるので、それで3FF番地の値を回復させて、改めてMPLAB-Xで書き込んでみるとLチカが動作しました。・・・が、再度コンパイルして書き込んでみると、やっぱり動きません。
Pickit2で見ると、また3FF番地の値が消失しています。この状態をPickit2で吸い出してHEXファイルに保存し、補正値を回復させ、改めて吸い出したHEXファイルを書き込むと、Pickit2は補正値を保存するので、ちゃんと動作しました。

とにかく「MPLAB-XとPIC12F675の組み合わせは使い物にならない」ということがわかりました・・・。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)