• ベストアンサー

EEPROMのデータの初期化について

techaの回答

  • techa
  • ベストアンサー率60% (41/68)
回答No.2

I2C接続タイプのEEPROMということですからおそらく512MBではなく、512KBの間違いでしょうねぇ。 いずれにせよ、1バイトづつ、バイトライトコマンドでおこなわれれば、たしかにかなりの時間を食うようにおもいます。単純に0クリアするのであれば ページライトコマンドをつかってみてはいかがでしょう。 ページライトだと、たぶん、64バイトごとの一括転送が可能となるはずです。(デバイスごとにちがうかも) いずれにせよ、ご利用になるEEPROMのデータシートを熟読されるほうが早いのではないでしょうか。

Simanohito
質問者

お礼

ご回答ありがとうございます。 EEPROMのデータシートを探して熟読します。 EEPROMのデータシートってどこにあるか知っていたら教えてください。

関連するQ&A

  • EEPROMのデータが化ける!

    困っているので教えてください。販売後、2ヶ月間は何も問題が無かったのですが、急にEEPROMのデータが化けるようになって、困っています。具体的には、月1回データ集計するのですが、数値的におかしなデータになってしまいます。EEPROMの中身を調べた所、数箇所でやはりデータがおかしくなっていました。回路的にはプルアップ処理はしています。インターフェースは「I2C」です。メーカーはマイクロチップです。データの書き込みは必要なバイトのみ書き込んでいます。書き込み時間は約5ms程度です。機械にはステッピングモーターが3個搭載されています。ノイズ、プログラム等色々考えられると思いますが、考えられる原因等ありましたら、アドバイスを御願いします。静電ノイズ試験機でノイズ注入しても液晶の表示等は化けますが、EEPROMのデータは化けませんでした(もしかしたら注入の仕方が悪いかもですが) このような経験をされた方、又は詳しい方、アドバイスを御願いします。

  • マイコンの中のEEPROMについて

    マイコンの中のEEPROMについて マイコンの中(例えばSHシリーズ)にフラッシュROM領域とEEPROM領域があります。 これらは物理的にというか原理的には同じものなのでしょうか。 例えば、両方ともフラッシュメモリーと同じ構造で、アクセス方法(プロトコル?)が違うのでしょうか。 それとも、物理的・原理的に違う仕組みなのでしょうか。 マイコンの外付けのEEPROMとの違いは何がありますでしょうか。 よろしくお願いします。 追伸 もっと適切なカテゴリーがありましたら誘導していただければと思います。

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

    現在、Atmel Studio6.2でatmega88pマイコンのプログラミングを行っています。リアルタイムデバッグではJTAGICE3を使用しています。プログラムのVersion値とeepromに保存しているVersion値を比較して、違いがあった場合は、プログラムの更新があったことを記録するため、最新のVersion値をEEPROMに書き込むプログラムを作成したのですが、EEPROMからRAM領域へ取り出したデータをリアルタイムデバッグでウォッチできない現象が起こり困っています。 なお、このプロジェクトフォルダは https://sourceforge.jp/projects/cc1101driver/scm/svn/tree/2564/branches/test002_AVRS6_20140819/test02/ こちらで公開させてもらっています。 (EEPROM領域側) #define EEPROM __attribute__((section(".eeprom"))) save_eeprom_data_t EEPROM save_eeprom_data; (RAM領域側) new_ctl_data tnew_ctl_data; main関数スタート後 check_env()関数内でEEPROM領域からRAM領域へデータを my_eeprom_read_block((u8 *)&tnew_ctl_data,(u8 *)&save_eeprom_data.gnew_ctl_data,sizeof(ctl_data)); この関数で読み出しているのですが、再度main関数内で if(tnew_ctl_data.fix_osccal_flag != 0x01 || tnew_ctl_data.prog_ver != PRG_VERSION) { ------(中略)--------------------------------- } このコードに来たときにtnew_ctl_dataをウォッチしても new_ctl_data.fix_osccal_flag tnew_ctl_data.prog_ver どちらの値も0x00と表示されてしまいます。 また、 tnew_ctl_data.prog_ver の値は0xdcのはずなのですが、0x00となっており、 PRG_VERSIONは #define PRG_VERSION 0xDD 0x00 と0xDDでは違いが出ているのですが、そのときの条件でEEPROM内容を tnew_ctl_data.fix_osccal_flag = 0x01; tnew_ctl_data.prog_ver = PRG_VERSION; eeprom_busy_wait(); eeprom_write_block(&tnew_ctl_data.fix_osccal_val,&save_eeprom_data.gnew_ctl_data.fix_osccal_val,3); このコードで0xddにtnew_ctl_data.prog_verの領域バイトを書き換えるはずなのですが、0xdcのままになってしまいます。 このような場合、どのように修正したら良いのかをご教示頂きますよう、お願い致します。

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

    お世話になります。 PICのデータEEPROMへの初歩的な書き込みができずに悩んでいます。 ご経験のある方、私の誤りについてご教示いただければありがたく思います。 PICについてはいくつかの種類でプログラムを書いていますがEEPROMのデータ領域は初めてです。 各種のサイトでは簡単らしいのですが・・・ 当方の試験作業は次のとおりです。 対象チップ PIC16F819 パソコン Windows-XP 書き込み装置 PIC-kit3 書き込みソフト MP-LAB IDE V8.83 プログラム言語 HI-TECH C V9.83 電源 Pic-Kit3から5Vで供給 確認方法 ・MP-LAB- View- EEPROM- のFillmemoryにより、EEPROMにすべてFFH/00Hのいずれもが書き込めることを確認の上、256バイトすべてにFFH ・下記プログラムを走らせる (実行後1秒後に1回書き込み(十進15番地に十進20の例)、以降ランプの点滅。ランプの状態でひとまずの動作の正常は確認) ・MP-LAB- View- EEPROM- により確認・・(全部FFHのまま(泣)) そのほか、チップを新品に交換したり、書き込み時間をEEIFで検査するアルゴリズムにしてみたり、いろいろやってみましたが、壁にぶつかっています。 よろしくお願いいたします。 #include<htc.h> #ifndef _XTAL_FREQ #define _XTAL_FREQ 4000000 #endif __CONFIG(CP_OFF & BOREN_OFF & MCLRE_OFF & PWRTE_ON & LVP_OFF & WDTE_OFF & FOSC_INTOSCIO & DEBUG_OFF & CPD_OFF); void main() { OPTION_REG = 0b00000000; // output pullup OSCCON = 0b01100100; // internal OSC 4MHz TRISA = 0b11111110; // GP-A input RA7=output ADCON1 = 0b10000111; // No AD all digital TRISB = 0b00000000; // GP-B output INTCON = 0b00000000; // no interrupt RB1 = 0;    //Green Lamp off RB3 = 0; //Red Lamp off while (WR = 1) { __delay_ms(1000); } EEADR = 15; EEDATA = 20; EEPGD = 0; GIE = 0; WREN = 1; EECON2 = 0x55; EECON2 = 0xaa; WR = 1;      RB1 = 1; // Green Lamp __delay_ms(100);      RB1 = 0;     GIE = 1;  WREN = 0; EWWW:; // IDLE Lamp Red RB3 = 1; __delay_ms(400); RB3 = 0; __delay_ms(500); goto EWWW; }

  • AVR studio6でeepromリードできない

    AVR studio6.1の環境をPCに入れてATmega88のプログラムを行っています。ATmega88に電源を投入直後に初期設定のために、あらかじめeeprom内に設定しているプリセット値を読み込むためにeeprom_read_byte関数を使用してデータを読み出したいと思っています。 テストとしてeepromの0x00番地のデータを読み出そうとしているのですが、データを読み出すことができず困っています。 volatile u8 test01; volatile u8 test02; volatile u8 test03; volatile u8 test04; volatile int addr; addr = 0x00; eeprom_busy_wait(); test01 = eeprom_read_byte(&addr); addr = 0x01; eeprom_busy_wait(); test02 = eeprom_read_byte(&addr); addr = 0x02; eeprom_busy_wait(); test03 = eeprom_read_byte(&addr); addr = 0x03; eeprom_busy_wait(); test04 = eeprom_read_byte(&addr); このようなプログラムを組んでAVR Studio6.1のシミュレーションモードで、eepromのアドレス0x00番地から順に0x00,0x01,0x02,0x03,0x04・・・・  このように設定してみたのですが、 実際にシミュレーションしてみるとeeprom_read_byteの戻り値に代入されたtest01,test02,test03,test04には0x00という値が代入されeeprom内からのデータの読み出しに失敗しているようです。 eepromデータの取り扱いに関するプログラムの書き方などご教示頂きますよう、お願い致します。

  • H8/3664でEEPROMのロガー

    ロータリーエンコーダーなどの機器からの情報を秋月のH8/3664をつかってEEPROMに書き込んでいます。 その情報をRS232Cを使ってPCに取り込むにはどのようにしたらいいですか? こういう風にすればEEPROMからH8/3664を通してPCに取り込める と、いう方法があれば教えてください。 USBやLAN通信でもOKです。

  • H8/3664でのEEPROMの使用について

    初歩的なことで申し訳ないのですが、H8/3664でEEPROMを使えずに困っています。EEPROMへの書き込み命令でプログラムがストップしてしまい、先へ進まなくなってしまいます。書き込み時間も考慮しており、回路にも問題はないと思われます。原因が全くわからず思案に暮れています。どなたかご指南いただけないでしょうか。お願いします。 ちなみに、プログラムはCで書いており、コンパイラはGDLを使用しております。よろしくお願いします。

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

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

  • MplabのRead_EEPROM

    Mplab8.92+PICkit3でPICのプログラムをしています。 ポート入力をPIC内蔵のEEPROMに書込むようなプログラムを作り ターゲットボード上で動作させた後、PICをボードから抜き取り Mplab上でReadしViewメニューのEEPROMで見ると ポートの入力とは異なる値になっています。 (ボードの入力はプルアップした上で固定してあります。) しかし、A社のプログラマーでReadすると ポート入力がEEPROMに正しく書込まれています。 (A社のプログラマーはサポートのデバイスが少ないので 現実的には使えないのですが。) 色々試してみると プログラムとして、「PIC内蔵EEPROMデータメモリに初期値として書込んだデータ」は 正しく、書込み、読取できましたが ボード上で動作しないと確定しないようなデータ (ポートの入力、カウント回数・・・等) は、正しく書込まれている (プログラムの動作から確認すると) けれどもMplab上のReadでは正しく表示されませんでした。 MplabのReadとはこういうものなのでしょうか? (私の推測ではMplabのRead-View-EEPROMはCPUを実機で 動作させることなくパソコン上でシュミレーションするための もののように思えてきたのですが・・・) それとも、何か設定すれば可能になるならば 教えてください。 私の場合Mplabを使う場合 シュミレーションとかは使いません。 コンパイルしてCPUに書込み(Program)するだけです。

  • AVR StudioのEEPROMのhexファイル

    いままでAVR Studio4というAtmelマイコンの開発環境をwindows 7のPCで使用していました。最近、PCを買い換えてwindows8になってからマイコンの書き込みで使っていたUSB接続のAVRICEデバッガがwindows8のドライバで対応していないなどがあり、AVR Studio6をインストールしたらこれらのデバッガが使えるようになったので使っていました。 しかし、複数のAtmega88のEEPROM領域に初期値として書き込んでいたhexファイルがあったのですが、なぜかAVR Studio6でダウンロード使用とすると書き込みがエラーしたりします。 まったく同じファイルをAVR Stuio4でダウンロード使用とするとこれは可能でした。 このEEPROMへのファイルのダウンロードに関してVer4とVer6ではなにか仕様に変化がありましたでしょうか? ご存じの方いらっしゃいましたらご教授頂きますようお願い致します。