• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EEPROMからRAMへ移動したがウォッチできない)

EEPROMからRAMへ移動したがウォッチできない

このQ&Aのポイント
  • Atmel Studio6.2でatmega88pマイコンのプログラミングを行っています。リアルタイムデバッグでEEPROMからRAM領域へデータを移動するコードを作成しましたが、ウォッチできない現象が発生しています。
  • データの読み出し時にウォッチすると、RAM領域の値が0x00と表示されてしまいます。また、データの書き込みもうまくできていないようで、特定の領域バイトが期待した値になりません。
  • 修正方法として、以下の点を確認してみてください。 1. EEPROMからRAMへのデータ移動が正しく行われているか確認する。 2. データの読み出しや書き込み時に適切なポインタや変数を使用しているか確認する。 3. 書き込み処理の前後でデータが正しく更新されているか確認する。

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

  • ベストアンサー
  • kabasan
  • ベストアンサー率44% (264/588)
回答No.1

my_eeprom_read_blockを実行する直前にブレークポイントで止めて、 EEPROM内のデータをを確認してください。そもそも意図した値はEEPROMにあるのですか? デバッグ開始時に全領域が00に初期化されていませんか?

techhouse
質問者

お礼

回答頂きありがとうございます。 https://sourceforge.jp/projects/cc1101driver/scm/svn/blobs/2564/branches/test002_AVRS6_20140819/test02/test02/src/main.c こちらのmain.cの2199行目の if(tnew_ctl_data.fix_osccal_flag != 0x01 || tnew_ctl_data.prog_ver != PRG_VERSION) この行でブレークポイントをかけた際に、EEPROMからRAMへ移した各アドレスのデータ値をウォッチしたところ、 tnew_ctl_data.fix_osccal_flag tnew_ctl_data.prog_ver それぞれ0x00となっていました。 しかし、EEPROM側のアドレスでは、ウォッチしたところ、 save_eeprom_data.gnew_ctl_data.fix_osccal_flag = 0x01 save_eeprom_data.gnew_ctl_data.prog_ver = 0xdc このようになっていました。 何か、RAM側に設けたtnew_ctl_dataは論理圧縮されているような気がしています。 また、RS-232C通信の9600bpsのずれを修正するために、RS-232Cの受信ポートで待ち受けて補正できるようにしたosccalコマンドのコード部分で、 https://sourceforge.jp/projects/cc1101driver/scm/svn/blobs/2564/branches/test002_AVRS6_20140819/test02/test02/src/main.c(1640行目付近) 1657行目の OSCCAL = tnew_ctl_data.fix_osccal_val; ここのところにブレークでOSCCALへの値の更新ができているかを調べたところ、tnew_ctl_data.fix_osccal_valの値はウォッチの際には0x00と表示されてしまいます。 しかし、ave_eeprom_data.gnew_ctl_data.fix_osccal_valでは0xa3などの補正値が正常に更新されており、メモリーウィンドウのeepromウィンドウでもこのアドレス部分の値が更新されていることを確認しています。 また、デバッグを行っていて、気になっているところがあるのですが、このosccalコマンドでOSCCALの更新を行った際に、更新が正常にできたことを目視で確認できるようにするためにRS-232CのTX送信で ”fix_ok\r”というテキストを出力するようにしていて、さらに何という値に更新したのかも目視できるように hexToAsc(OSCCAL,&tex_test[0]); tex_test[2] = 0x0d; putstr(tex_test); このようなコードを追加したのですが、うまくいきませんでした。 いろいろと調べてみたところ、”fix_ok”を出力しているコード putstr((u8 * )" fix_ok\r"); このコードをコメントアウトしてビルドしても、このルーチンを通過すると”fix_ok”というキャラクタをRS-232Cに出力していることに気づきました。 このような現象を解決する方法をご教示頂きますよう、よろしくお願い致します。

techhouse
質問者

補足

この度は、ご協力頂き大変助かります。 今回の問題に関しては、一度マイコンをデバッグモードを停止して、通常のプログラミングモードでファームウェアを書き込んだ場合だと、変更したプログラム通りの動作をすることがわかりました。 現在なぜそのような動作をしたのか調査中です。 とりあえず、変更したプログラム内容は反映されていることが確認できました。 大変助かりました。

関連するQ&A