• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PIC のデータEEPROMに書き込みができません)

PICのデータEEPROMに書き込みができません

このQ&Aのポイント
  • PICのデータEEPROMへの書き込みができずに悩んでいます。 初歩的な書き込み方法をご教示いただけると助かります。
  • PIC16F819チップを使用し、MP-LAB IDEの書き込みソフトを利用しています。 EEPROMにはすべてFFH/00Hのいずれもが書き込めることを確認しましたが、実行後の確認では値が変わっていません。
  • 新品のチップに交換し、書き込み時間を検査するアルゴリズムに変更してみたりしましたが、問題が解決しません。 どのような原因が考えられるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.1

<Read EEPROM> コマンドを実行していますか? pic_eeprom -> MPLAB また出力されたアセンブルリストを確認してみては http://sdr-de-bcl.blog.so-net.ne.jp/2010-03-27 http://sfukuda.at.webry.info/201112/article_10.html

参考URL:
http://www.robotsfx.com/robot/robohow/RoboHow106/RoboHow106.html
joshua01
質問者

お礼

ありがとうございます。 ご示唆をもとに、今までほとんど使っていなかったdebugモードを使用し、現在のプログラムでもEEPROMへの書き込みは成功しており、MPLABでの確認がうまくいっていなかったことがわかりました。 プログラムとPICの機能ばかり確認していてMPLABのマニュアルを確認していなかった(あとで再度確認します)・・・(ついでに、EEPROMに書き込んだデータを再度読み出してランプの点滅間隔を変えるプログラムを書いて確認しました) ありがとうございました。

その他の回答 (1)

  • pyonmae
  • ベストアンサー率64% (40/62)
回答No.2

こんばんは。 書き込み手順自体は、そんなにおかしくないように思いますので、あてずっぽう的な推理になりますが、2つ気になる点があります。 1. 18行目くらい  while( WR = 1 ) { これは何が起こるのか予想がつきませんが、恐らく意図したようには動かないでしょう。 2. 25~29行目くらい WEN=1 ~ WR=1までのくだりは、アセンブラレベルで書けるインストラクションが決まっています(データシートで言う、"special five instruction")。 コンパイラがどんなコードを吐き出しているのか、確認されてはどうでしょう。 例えば、EECON2に値を書き込む際、バンク切り替えコードが挟まれていないかとか。 あと、関係ないところでさらに3点ほど気になる所があります。 3. 9行目くらい コメントに"output pullup"とありますが、内蔵プルアップは入力ポートにしか効かなかったような気がします。 4. 33行目くらい 割り込みを使っておられないようなので、GIEに1を書く必要は無いかと思います。 5. 34行目くらい テスト用コードだからだとは思いますが、WRENがセットされてからクリアされるまで100ms以上空いていますが、ここは極力短い方がいいと思います。 以上です。

joshua01
質問者

お礼

つたないプログラム(おまけにいろいろなところを繰り返し書き換えてかなりめちゃめちゃになったものを投稿に当たって何とか整理したもの・・・)をこまかいところまでご確認いただき、ありがとうございました。 結局、A1のとおり、プログラムには致命的な誤りはなく当方でのMPLABの使用方法が間違っていたことがわかりました。 プログラムの側のご指摘については参考にさせていただきます。 特にpullupはどこで勘違いしたかちゃんと確認しないと・・・。 ご検討いただき、ありがとうございました。

関連するQ&A