[戻る]
過去ログ [ 0001 ]
過去ログ:     ワード検索: 条件: 表示:

タイトル
記事No
投稿日
投稿者
参照先
EEPROMに書込みできない
220
: 15/05/22-11:59
gon <sakaex@grn.janis.or.jp>

PCM V5.0(PIC用CCS社コンパイラ)を
Mplab8.92に組込み、PICkit3を使ってプログラムしています。

PIC16F1827(32MHzで動作)において
ポートから入力したデータを内蔵EEPROMに書込みすることが
できません。

ボードのポートAを0xdeに固定しておいて読込み
(3)(4)で0xdeであることをLEDの点灯で確認しています。
テストプログラムを一回動作させ
ボードからCPUを抜取り、Mplab上でReadすると
EEPROMのアドレス0,1には0x28,0xb5が書込まれていますが
アドレス2には0xdeが書込まれていません。
0xdf,0x9f,0x00とか動作させるたびに異なっています。

1.私のプログラムが悪いのか?
2.PCMのバグなのか?
3.Mplabの使い方が悪いのか?
悩んでいます。

ご教授をお願いします。

//----- テストプログラム ------
// RAはポートA 全て入力
// RBはポートB B0以外全て出力
// B7にLED接続 Hで点灯

i = 0x28;
write_eeprom (0,i); // (1) 変数を書込
write_eeprom (1,0xb5); // (2) 定数を書込
i = RA; // RA = 0xde に固定
if (i==0xde)
RB = 0x80; // (3) RA = 0xde ならLED点灯
else
RB = 0; // (4) RA = 0xde でないならLED消灯
write_eeprom (2,i); // (5) i=0xde を書込
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: EEPROMに書込みできない
221
: 15/05/24-13:19
デバッグしましたか?

RAやRB→PORTA、PORTBへ

残りは見えないですが、INCLUDEの設定ではないか
先ずは自分で調べて、デバッグできるようになりましょう


> PCM V5.0(PIC用CCS社コンパイラ)を
> Mplab8.92に組込み、PICkit3を使ってプログラムしています。
>
> PIC16F1827(32MHzで動作)において
> ポートから入力したデータを内蔵EEPROMに書込みすることが
> できません。
>
> ボードのポートAを0xdeに固定しておいて読込み
> (3)(4)で0xdeであることをLEDの点灯で確認しています。
> テストプログラムを一回動作させ
> ボードからCPUを抜取り、Mplab上でReadすると
> EEPROMのアドレス0,1には0x28,0xb5が書込まれていますが
> アドレス2には0xdeが書込まれていません。
> 0xdf,0x9f,0x00とか動作させるたびに異なっています。
>
> 1.私のプログラムが悪いのか?
> 2.PCMのバグなのか?
> 3.Mplabの使い方が悪いのか?
> 悩んでいます。
>
> ご教授をお願いします。
>
> //----- テストプログラム ------
> // RAはポートA 全て入力
> // RBはポートB B0以外全て出力
> // B7にLED接続 Hで点灯
>
> i = 0x28;
> write_eeprom (0,i); // (1) 変数を書込
> write_eeprom (1,0xb5); // (2) 定数を書込
> i = RA; // RA = 0xde に固定
> if (i==0xde)
> RB = 0x80; // (3) RA = 0xde ならLED点灯
> else
> RB = 0; // (4) RA = 0xde でないならLED消灯
> write_eeprom (2,i); // (5) i=0xde を書込
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^2: EEPROMに書込みできない
222
: 15/05/27-10:34
gon <sakaex@grn.janis.or.jp>

回答ありがとうございます。

結果的にはMplabの使い方に問題があることがわかりましたが
どうすればよいかは未解決です。

私の場合、PICKIT3に接続しているボードは
プログラムの書込みのみに使用していて、
動作させる実機ボードは別のものになっています。

プログラムを書込んだPICを実機で動作させた後
A社のProgrammerでReadしてみると
EEPROMのアドレス0,1,2はそれぞれ28h,b5h,dehで
正しく書込まれています。
(A社のProgrammerはサポートしているデバイスが
少なく現実的には使用していませんが。)
したがってPICの動作に問題はなく
MPLABのRead-View-EEPROMの機能が
もともと、そういうものなのか
それとも私の使い方が悪いのかということになります。

PICKIT3を調べてみると
「Programmer」ではなく「デバッカー」と書いてあります。
私はMPLAB上でデバックすることはありません
コンパイル(Build All)してPICに書込むだけです。

PICFUNには
「PIC内蔵EEPROMデータメモリに初期値をあらかじめ書き込みたい」
これらコンパイルした結果、EEPROMにデータが確保できたかどうかは、
MPLABのViewメニューでEEPROMを選んで表示内容で確認できます。
・・・と記載されています。
そうすれば
MPLAB上でReadした場合
(1)(2)のみが正ければ(5)は問題外なので
((5)は実機で動作したあと確定するものなので)
正しい結果ということになります。
この判断でよいのでしょうか?
もしOKとしても
私としては(5)も正しくReadできる方法がありましたら
教えてください。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
投稿者削除
223
: 15/05/27-15:39
(削除)

(投稿者により削除されました)
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^4: EEPROMに書込みできない
227
: 15/05/28-08:11
gon <sakaex@grn.janis.or.jp>

回答ありがとうございます。
> PIC16F1827 EEPROMの当該アドレスには正しい値が書き込まれている。
> MPLAB8.92+PICkit3で読むと当該アドレスには誤った値が表示される。
> という理解でよろしいでしょうか。
そのとおりです。

> MPLAB IDE v8.84+PICkit3で正しく読めています。
私も(5)のような実機で動作しないと確定しないデータ以外は
ただしく読めているのですが・・・。

> 手順をもう少し詳しく書いていただけると回答しやすいです。
1. MPLAB上でPIC16F1827とPIC16F88にプログラムする。
2. 16F1827と16F88を実機上で動作させる。
3. 動作後の16F1827と16F88をMPLABにのせて、Readする。
  結果 両方とも アドレス0,1はOK アドレス2はNG
4. 16F88をA社のProgrammerにのせてReadする。
 (A社のProgrammerは16F1827をサポートしていません。)
結果 アドレス0,1,2は全てOK

16F88の場合
A社のProgrammerでアドレス0,1,2全てOKですが
MPLABではアドレス2がNGという結果です。

なお、MPLABはBuildConfigurationをReleaseで使用しています。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
投稿者削除
231
: 15/05/28-15:52
(削除)

(投稿者により削除されました)
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^6: EEPROMに書込みできない
237
: 15/05/29-14:58
gon <sakaex@grn.janis.or.jp>

回答ありがとうございます。

> PICをPICkit3に接続すると,PICに電源が供給されプログラムは動作します。
目からうろこ・・・の心境です。
恥ずかしながら、このことを知りませんでした。
これを教えていただき全ての問題は解決しました。

ちなみに
> i = 0xde; は i=RA (RAはAポートです。) 
▲pagetop

- WebForum -