H8/3048Fの定数領域に関する質問

このQ&Aのポイント
  • H8/3048Fを使用した装置のパラメータ設定に関する疑問があります。
  • 装置の電源を切った状態でもパラメータが保持される理由がわかりません。
  • ROMの増設はされていないため、ROMの定数領域が書き換えられる可能性が考えられます。
回答を見る
  • ベストアンサー

ルネサスH8/3048Fの定数領域

お世話になっております。 ルネサスH8/3048Fについて質問です。 また会社の古い装置を解析しているのですが、わからない事が有り質問させていただきます。 H8/3048F使った装置なのですが、装置のパラメータの設定/記憶にH8/3048Fを使っています。 プログラムは、内部のフラッシュROMに直接書き込んでいます。 が、この装置は増設のEEPROMを持っていないので、設定したパラメータが消えないように、AC100Vの電源とは別に電池を載せて、常にH8/3048Fが動いている状態に保つという変な構造になっています。 ところが、その電池を外した状態でパラメータの設定をし、電源を落として再度投入したところ、なぜか設定が保持されていました。 先に書きましたように、ROMの増設などは一切されていないので首を傾げています。 ひょっとして、プログラムの実行中にROMの定数領域を書き換える事が可能なのでしょうか? 恥ずかしい話ですが、ソースファイルが残っていないため、プログラムの検証が出来ません。 原因が分かる方がおられましたら、ぜひご教授ください。

noname#230358
noname#230358

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

  • ベストアンサー
noname#230359
noname#230359
回答No.1

私はもっぱらMichrochipのPICを使っておりH8は未体験ですが、回答が付かないようなのでPICの知識をベースに原因を推定してみたいと思います。 質問の ・増設のEEPROMを持っていない ・電池を載せて、常にH8/3048Fが動いている状態に保つ ということから、設定したパラメータはH8/3048FのRAMに書き込まれているのでしょう。 電池を外し、電源を落として再度投入しても設定が保持されていたのは、H8/3048Fの内蔵RAMがDRAMでなくスタティックRAMであるため、電源回路のケミコンに残っていた電気でRAM内容が保持されていたのではありませんか。 電源断から再投入までの時間を変えて試してみたらどうでしょうか? 蛇足ですが、PICはデータ保持用のEEPROMを内蔵しているものが多いので重宝しています。

noname#230358
質問者

お礼

回答ありがとうございます。 ご指摘の内容が原因だったようです。 電源を落とした後、今度は1時間くらいまって試してみたところ、今度はデータが消えているのを確認しました。 普段、自分で開発を行う場合はPICも使っています。 記憶させるデータの量が少ないときははあれで十分ですよね。

関連するQ&A

  • マイコン H8/3694 ファイルの読み込み

    お世話になっております。 現在ルネサステクノロジH8/3694Fを使ってEEPROMへ書き込み・ 読み込みのプログラムを勉強中です。教科書を見ながらSCIを 使って1文字ずつ書き込み・読み出しは出来たのですがファイル を読み込んでそれをEEPROMに書き込むというのがうまく行きません。 FILE *fp; char [20]; fp=fopen("abc.txt","r"); などと書くとエラーとなってしまいます。 C言語で言うstdio.hなどが必要なのかと思いますがよくわかりません。 そもそもファイルを読み込んでEEPROMに書くこと自体ができるのでしょうか? 教科書はH8/Tinyマイコン 完全マニュアル 島田義人 28章のIICのところを勉強しています。 これだけでは不足だと思いますので補足は致します。 どなたか詳しい方よろしくお願いします。

  • PICマイコン メモリのバックアップ 切換え

    PICマイコンにて電源を切ってもデータを保持したいです。 マイコンはPIC16F84やPIC16F887を使います。 887でEEPROMを試したのですが、書込みのタイミングが悪いのかデータを保持出来ない場合がありました。 基板は、16F84、16F887どちらも共通にしたいので、リチウム電池で保持しようと考えています。 その場合、外部電源とリチウム電池の自動切り替え回路はどのようにすれば良いでしょうか。 簡単な案は、「リレーを使い切り替える。」ですが、他にありましたら教えて頂きたいです。 また、充電電池の場合、参考となる回路があればご紹介ください。 宜しくお願いいたします。 この手のカテゴリはどこなんでしょうか。

  • H8(マイコン)のプログラムサイズ

    マイコンの勉強ということでH8/3694F(ROM:32KB、RAM:2KB)を 購入しました。 開発環境はルネサスのHEWを使い、プログラムは同社のFDTを使って 拡張子motファイルをROMに書き込んでいるのですが、そのmotファイル が59KBであることに気付きました。 59KBだとCPUのROMサイズ(32KB)を超えているのですが、これは32KB分 までしか書き込まれていないということになるのでしょうか? プログラム実行中は問題なく動作しているように見えるのですが・・・ また、プログラムサイズを簡単に確認する方法、見積もる方法など 参考になるサイトをご存知でしたら教えて下さい。 よろしくお願いいたします。

  • PIC16F1827のEEPROMへの書込み

    PCM V5.0(PIC用CCS社コンパイラ)を Mplab8.92に組込み、PICkit3を使ってプログラムしています。 PIC16F1827のEEPROMへの書込みがうまくいきません。 RAは入力ポートで固定してあります。 RBは出力ポートでLEDが接続してあります。 テストプログラムは一回のみの動作です。 実機で動作させると RAは固定してあるので当然(4)でLEDが点灯しますが、 実機からCPUを抜き取りMplab上でReadすると EEPROMのアドレス0,1,2は異なるデータであり 動作させるたびに違うデータが書込まれています。 しかし (1) a0=35h (2) a1=a6h (3) a2=93h と定数にすると EEPROMのアドレス0,1,2は正しいデータが 書込まれています。 Q1. a0,a1,a2をポート入力とする場合は CPU自体に何か設定する必要があるのでしょうか? それともプログラムに工夫が必要なのでしょうか? いままで使っていたPIC16F88では このようなことはなかったと思うのですが・・・。 ----- テストプログラム ----- a0 = RA; //(1) write_eeprom (0,a0); a1 = RA; //(2) write_eeprom (1,a1); a2 = RA; //(3) write_eeprom (2,a2); if (a0 == a1 && a1==a2) //(4) RB =255; else RB =0;

  • dsPIC30F6014が温度変化でシリアルEE…

    dsPIC30F6014が温度変化でシリアルEEPROMから読込みができなくなる。 dsPIC30F6014を使った製品を作っていますが、PICが温まるとシリアルEEPROM(24C1024)からデータを読み込めない現象が起こっています。オシロでEEPROMのSDA(5番ピン)を確認した所、読めない時はPICから信号が出ないことは確認できました。 PICの温度は、電源投入後数分の為、人肌程度の温度です。また、その状態で冷却スプレーをかけて冷やすと読込みができるようになります。 以上の内容に対し、アドバイスをお願いいたします。 (原因がどこにあるのか、わからないのでお願いいたします)

  • H8/3048FのWDTについて

    H8/3048FのWDTについて 今学校でH8マイコンについて学習している者です。 その中でウォッチドッグタイマについて分からないことがあり、質問させていただきます。 プログラムはROMではなくRAMに書き込んでいます。そのプログラムの動作中にWDTが働いてLSIがリセットされるとRAMの中身もすべてリセットされてしまうのでしょうか? ハードウェアマニュアルには「LSI全体が初期化される」との記述がありましたので、個人的にはRAMも初期化されてしまうと考えています。 もしRAMまで初期化されてしまうのであれば、リセットがかかった際にプログラムをリスタートすることができず、再びマイコンにプログラムを転送しなければならないということなのでしょうか? また、どこかにプログラムを退避させることでリスタートすることが可能になるのでしょうか?

  • EEPROMの種類を判定する方法について

    H8/3052Fボード(秋月より購入)でを使用してi2cのシリアルEEPROMとインターフェースする装置を作成してデータ書き込みは出来るようになったのですが、 EEPROMの種類(512KBなのか512KBなのか)をプログラムで判定して256KBのEEPROMがセットされたらエラーを返すようにしたいのですがいい方法ありませんか?

  • 秋月のH8/3052Fがプログラム書替え不能になったことを知るには?

    秋月のH8/3052Fボードを使っています。 H8Write-TurboでROM上に書き込んでデバックしています。 H8Write-Turboとしては書込みできるのですが プログラムを変えても、以前のプログラムが動作しています。 (プログラムが未完成のときはこのことに気が付くまでに大変、 時間を浪費してしまいました。) H8/3052Fのプログラム書替え限界に達したようです? H8Write-Turboとしては書替え限界に達したとき 何かメッセージをだすのでしょうか? (出さないと困るのですが) 書替え回数は100回ぐらいと聞いたような気がしますが、 実力的な回数の経験をお持ちの方、教えてください。

  • H8マイコン スタック領域について

    スタック領域について教えて下さい。 [動作環境]  開発環境:ルネサス HEW Version 4.08  マイコン:ルネサス H8/1653  コンパイラ:H8SX,H8S,H8ファミリ用C/C++コンパイラパッケージ V7.00 HEWにて新規作成しますと、セクション定義にスタック領域(S)のアドレスと stacksct.h 内に スタック領域のサイズ #pragma stacksize 0x200 が自動で生成されると思います。 しかし、入手したH8/1653用のサンプルには #pragma stacksize のような サイズ指定がありませんでした。 [サンプル] (1)セクション定義やスタック領域のサイズ指定が無い (2)サブコマンドファイル(xxxx.sub)内でアドレスは設定されているが サイズの設定が無い。 -- サブコマンドファイル(xxxx.sub)-- START  CStart/00000000; START  P,C,D/00000400; START  B,R/00FF2000; START S/00FFC000; [質問]  質問1   (1)のスタック領域はどこに配置されるのでしょうか?  質問2   (2)のスタック領域は 00FFC000 を基準にどう確保   されるのでしょうか? (a)の方向へ確保?(b)の方向へ確保?          00F00000 (a)         ↑       00FFC000 (設定アドレス)         ↓       00FFFFFF (b)        質問3   (1)、(2)共にスタック領域と同時にヒープ領域も指定がありません。   これらは指定しなくても問題ないものなのでしょうか?   また、熟練者の方は指定しないものなのでしょうか? よろしくおねがいします。

  • AKI-H8/3048FのLEDマトリクス表示装置を動かしたいです

    AKI-H8/3048FのLEDマトリクス表示装置を動かしたいのですが、どのようなプログラムを作ったらいいかわかりません。縦データと横データのタイミングを合わせるとかなんとか聞いたのですがよく分かりません。 よければ、例となるようなプログラムを教えていただけると助かります。お願いします。