2024年1月25日の日記の2番目の記事へのコメント

基板

PIC-K150 でPIC12F509にプログラムを書き込むと、毎度以下のよくわからないダイアログが出ます。

PIC-K150で出るダイアログ

ここでYesとNoのどちらを選んでも正常に書き込みが完了してPICも普通に動作することは以前確認していましたが、そもそもこのエラーが意味するところは何なのかよくわかっていなかったので、改めて調べてみました。

  • このエラーメッセージに出てくる謎の単語「OSCAL」は、実は「OSCCAL」のtypoで、OSCCALはPICの内蔵のオシレータを使う際のキャリブレーション値
  • キャリブレーション値は、個体ごとに異なり、製造時に最初からPICの0x3FFに書き込まれている (バックアップは0x404にある)
  • キャリブレーション値 XX は、実際には0xCXXという値で書かれている。これはMOVLW XX という命令に相当し、実行するとWレジスタにXXがロードされる
  • プログラムカウンタはリセット時に 0xFFFになっているが、PIC12F509のメモリアドレスの範囲は 0x0〜0x3FFなので、0x3FFが実行される
  • つまり、リセットすると Wレジスタにキャリブレーション値が入った状態で、0番地からの命令が始まることになる
  • 一方で、hexファイルには0x3FFに入れる値が書かれていないため、PIC-K150のツールでhexファイルを読み込むと0x3FFには0xFFFが入った状態となる
  • 0xFFFは XORLW 0xFF なので、Wレジスタと0xFFをXORをした結果がWレジスタに入る命令となるため、「これじゃダメでしょ?0xCXXに置き換える?」と言っているのがこの警告の内容っぽい
  • ツール自体は実際のところ0x3FFに0xFFFを書き込むことはせず、消去前に元の値を一旦読み出して、書き込み時に元の値を書き直しているっぽい

結局ツール側で元の値を残してくれるっぽいのでどうでもいいんですが、一応手動で書き換えておくと、先のダイアログは出なくなるようですw

手動で0xCXXに書き換えるとダイアログは出なくなる

あと、CPicS2のプログラムでは、そもそもこのキャリブレーション値を使っていないため、ここが0xFFFになったりしていても特に問題なかったりします。

お名前:  メールアドレス(省略可):
メールアドレスも表示されます
ここに名前その他を書いてはいけません: ここにメールアドレスその他を書いてはいけません:

2024年1月25日の日記の2番目の記事へのコメント

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2024年1月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ