趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。※サイト移転しました(tomono.eleho.net ⇒ tomono.tokyo)
RSS icon
  • MPLAB-X + PIC12F675は使えない・・・・

    投稿日 2013年 8月 13日 コメントはありません

    ちょっと治具を簡単に手持ちの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の組み合わせは使い物にならない」ということがわかりました・・・。


    コメントをどうぞ(日本語のみ/Only in Japanese)

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