• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PIC16F1827のEEPROMへの書込み)

PIC16F1827のEEPROMへの書込みがうまくいかない問題とは?

このQ&Aのポイント
  • PIC16F1827のEEPROMへの書込みがうまくいかない問題について詳しく説明します。
  • テストプログラムの一回のみの動作でEEPROMのアドレス0,1,2に違うデータが書き込まれる現象が発生します。
  • a0=35h、a1=a6h、a2=93hと定数にすると書き込まれるデータが正しいことがわかります。CPU自体に何か設定する必要があるのか、プログラムに工夫が必要なのかどうか疑問があります。

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

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

入力ポートが開放状態 (PULL UP/DOWNなし)ではポート値が不確定になります (読み出す度に違う値になる) つまりRA入力ポートに何も接続しない状態でプログラムを実行したと思われます 「PICkit 3 Scripting Tool 」を使用した方が、VDD,/MCR,EEPROMの状態を直接確認できます。 (TARGET POWER - ON のチェックを外すと、PICが実行状態になることはありません) http://www.ne.jp/asahi/air/variable/picmel/integration/write/pickit3/

Kuma2000
質問者

お礼

回答ありがとうございます。 >つまりRA入力ポートに何も接続しない状態でプログラムを実行したと思われます 実機にはプルアップ抵抗もありますし、入力は固定しています。 たとえ入力がフローティングで不安定ならば(4)でLEDが点灯しません。 質問はLEDが点灯しているにもかかわらず EEPROMの書込みデータが異なることを問題にしているのです。

その他の回答 (1)

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

No.1 補足 実機ではなく、実機から取り外してMPLABでEEPROM READ時のプログラム実行の可能性を指摘したのですが、説明不足かも知れません ソフトウェアで対処、確認方法 1) プログラムでEEPROMのデータ書き込みを一回のみに制限する、 EEPROM番地4=0xFF(初期値)ならば、RAポートデータをEEPROM番地0-2へ書き込み、EEPROM番地4=0にして再書き込みを防止する 2) プログラムの実行回数をEEPROMへ記録する プログラムを実行する度にEEPROM番地5のデータを+1する これで問題解決の糸口がつかめると思います。

Kuma2000
質問者

お礼

回答ありがとうございます。 質問が説明不足かもしれませんが、 write_eeprom () 命令のためにコンフィグ等で何か設定が必要なのでしょうか? ということです。 現状で不安定な命令を使って、自分の期待する値にするような 工夫をしても意味がありません。

関連するQ&A