MplabのRead_EEPROM

このQ&Aのポイント
  • Mplab上のRead-View-EEPROMについての疑問
  • A社のプログラマーでは正しくEEPROMを読める
  • Mplabを使う場合はシュミレーションを使わない
回答を見る
  • 締切済み

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)するだけです。

noname#230358
noname#230358

みんなの回答

noname#230359
noname#230359
回答No.3

毎度JOです。 回答(1)と同意見ですが、問題を切り分けてみましょう 症状からPICkit3のReadを疑ってみるべきですが、以下の検証が不確定です 1)>>プログラムとして、「PIC内蔵EEPROMデータメモリに初期値として書込んだデータ」は正しく、書込み、読取できました   初期値として書き込んだ訳ですが、これはPICkit3でReed? A社のプログラマーでReed?   これはPICkit3でReedなら「不確定」ですので信頼出来ません 2)>>ボード上で動作しないと確定しないようなデータ(ポートの入力、カウント回数・・・等)は、正しく書込まれている   確認はどちら PICkit3でReed? A社のプログラマーでReed?これはPICkit3でReedなら「不確定」ですので信頼出来ません ICEが有ればインサーキットで動作中に確認出来ます、 PICkit3でもインサーキットプログラムが出来るので基板から取り外さなくともEEPROMのデータは確認出来ます 何れにしても、回答(1)と同意見です

noname#230359
noname#230359
回答No.2

すいませんPICの専門家ではありません CPU内データを見るには インサーキットエミュレータ http://www.microchip.com/pagehandler/ja-jp/family/EmulatorAndDebugger/home.html これが必要なハズなんですが? http://so-zou.jp/robot/tech/microcomputer/pic/development-environment/mplab-ide/debug/#no17 http://www.eleki-jack.com/mycom2/2008/06/pickit212.html ご参考までにルネサスのオンチップデバッガ http://japan.renesas.com/products/mpumcu/rl78/peer/manual_softtools_index.jsp?campaign=tool_mrl 専用のエミュレータも有りますがCPUチップにモニタ機能内蔵してるので 必ずしもエミュレータは必須ではない パソコンとCPUをUSBケーブル直結するだけでEEROM書込みとモニタ可能 但し、CPU内蔵オンチップエミュレータ機能にはそれなりの制限が有りますが PICのCPU単体にはそのようなモニタ機能が無かったと思う

noname#230358
質問者

お礼

回答ありがとうございます。 >CPU内データを見るには そのような(広義な)質問はしていません。 PICのProgrammerならばA社製品に限らず、 (シュミレーションではなく)RUN後のEEPROMをReadできます。 できなければ、回答者様も購入しないでしょう。 MplabのRead-View-EEPROM では そのReadできる範囲にProgrammerと違いがあります。 それは Mplab+PICkit3 によるものか 設定でProgrammerのように使えるのでしょうか・・・と質問しています。

noname#230359
noname#230359
回答No.1

>MplabのReadとはこういうものなのでしょうか? MPLABの使い方を間違えてるだけだと思います。 >これが必要なハズなんですが? >>PICkit3でPICのプログラムをしています。 みたいです。 >パソコン上でシュミレーションするためのもののように思えてきたのですが それも出来ますし、オンボード 自分のプログラムに間違いが無いかチェックするのが最初のステップでしょう。  http://www.geocities.jp/zattouka/GarageHouse/micon/MPLABX/Simulator1.htm 誤>オンボード 正>オンボードデバッグも出来ます

noname#230358
質問者

お礼

回答ありがとうございます。 >MPLABの使い方を間違えてるだけだと思います。 間違えているのかもしれないから質問しているのですが・・・。 「間違えている」というなら ProgramerのようにReadするための Mplabの設定(使い方)を教えてください。

関連するQ&A

  • MplabでEEPROMの読み出し

    Mplab 8.92とPICkit3です。 PIC16F1827でプログラム内でEEPROMに書き込みをしています。 その内容を確認するために Mplabで (1)Programmer---Read (2)View---EEPROM で確認しています。 一度Readすると0だったものが、もう一度Readすると3と赤く表示 されました。 何度読みだしてもEEPROMの内容が変化するはずはないのに なぜ変化するのでしょうか? それとも私のMplabの使い方が間違っているのでしょうか? ご教授お願いします。

  • 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;

  • 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データの取り扱いに関するプログラムの書き方などご教示頂きますよう、お願い致します。

  • PIC EEPROM

    PICでLEDのデータをEEPROMに書き込んで電源を切ってもデータを保存させ、再度電源オンの時は電源を切る前のデータで点滅させたいのですが、EEPROMって書き込みと読み出しってありますよね?  この場合は、LEDデータの書き込みのみで大丈夫でしょうか?

  • 不揮発メモリ(EEPROM)内蔵のワンチップマイ…

    不揮発メモリ(EEPROM)内蔵のワンチップマイコンについて http://mori.nc-net.or.jp/EokpControl?&tid=154077&event=QE0004 に非常に奇妙な質問と回答がありました。 回答が締め切られたため、別話題として質問にしてみました。 不揮発メモリのEEPROMには書きこみ回数に寿命制限があります。 このため、ワンチップマイコンにEEPROMを内蔵すると、書きこみ回数の 寿命制限を越えたときから、マイコンは正常に動作できなくなる問題 があります。 従って、EEPROM書きこみ回数制限を越えても、CPUが動作できるように、 不揮発情報をCPU外部のNVRAM RAMに持たせるという考え方がH8ではとられ ていると思われます。 一方PICマイコンで内蔵EEPROMを使用するには当然、その書きこみ回数が 書きこみ制限回数を越えないような応用に使わないと、PICマイコンは EEPROM書きこみ回数の上限値を越えたときから恒久故障に至ります。 そうしたマイコンそれぞれの設計思想を理解せずして、PICマイコンが良い とか、H8が悪いみたいな結論は、マイコンとその応用の仕方の考え方の 理解が全くできていないと思いますよ。 H8が悪くてPICが良い? http://mori.nc-net.or.jp/EokpControl?&tid=154077&event=QE0004

  • PIC16F84AにAE-PICPGM USB1で書き込みをしたのです

    PIC16F84AにAE-PICPGM USB1で書き込みをしたのですが・・・ 先日、秋月電子通商でPIC書き込みボード「AE-PICPGM USB1」を購入し、PIC16F84Aに書き込みをしたのですが、ブレッドボード上で動作しません。 開発環境は以下のとおりです。 開発ソフト:MPLAB IDE ver.8.56 書き込みボード:AE-PICPGM USB1(秋月) プログラマ:PICkit2 programmer コンパイラ:HI-TECH C compiler ver.9.71a OS:windows 7 Home premium (64bit) MPLAB上ではコンパイルでき、hexファイルも生成されます。 プログラマ上でhexをインポートすると「No configuration ・・・」と表示されますが、MPLAB側で「Export file」で出力してやると、問題なくインポートできます。 書き込み、ベリファイチェックともに特にエラーメッセージも出ません。 コンパイラを見てもわかるように、プログラムはC言語で記述しています。 内容はLEDを点灯させる(出力ポート:1)だけの単純なものです。 この1週間格闘しましたが、動作する気配もなくモンモンとする毎日です。 どなたかこの現象について知見のある方、ご教示ください。

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

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

  • 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; }

  • EEPROMのデータが化ける!

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

  • PICの逆アセンブル?について

    お世話になります PIC初心者です 誤ってPICのプログラムをパソコンから消してしまいました 幸いプログラムを書き込んだPICはあります PICのプログラムを読み込んで エディタで修正したいのですが方法がわかりません 書き込みソフトでHEXファイルまではできるのです ここからアセンブラ言語のASMファイル?にする方法を教えてください 環境は MPLABがVer.4 書き込みは秋月のプログラマVer.4 です よろしくお願いいたします