PICプログラミングを初めて1ヶ月ほどの初心者です。下記、困っています。
プログラムサイズが小さいときは問題ないのですが、プログラムサイズが増える(推測です) と暴走する現象が起きています。
正常に動作しているプログラムでも、 'nop' を増やしていくとある時点で暴走します。(メインのループ内、外とも同様です。)
この状態で、他の、無駄なコーディング部を削除すると、正常に動作します。
何が原因で、どうすれば長いコードを書き込め、正常に動作できるようになりますが。
PICProg4Uで確認するとプログラムメモリが 0100 を超えるとプログラムが暴走現象がおきます。
MPLAB(v7.6, v8.2, v8.3) それそれで試しましたがどれも同じです。
PIC16F84A, 16F88 を使っていますが両者とも同様に暴走します。
( 両者ともhexファイルのファイルサイズは1500バイト前後が限界です。)
環境
MPLAB(v7.6, v8.2, v8.3), PICProg4U(v1.3.2.B), RCDライター、自作PC (WinXP, SP3)
以上、アドバイスよろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
アセンブラーでPICをプログラムする場合の、大抵の初心者が犯すミスですね。
こちらの中程の「PIC におけるプログラムカウンタ(PC)の操作」の説明欄をよく読んで下さい。特に最後の「0x0800 の壁」が重要ですよ。http://junkbox.info/pic/index.htm
PICは組込み制御用の小型マイコンとして数百円という低価格で提供する為に、様々な部分に工夫(?)を凝らしています。アセンブラーでプログラミングする場合には、特殊レジスターへのアクセスの際のBANK切り替えや、プログラムカウンターサイズ等を十分に気をつけてプログラムすれば、大きなソースでも何も問題なくプログラミングできますよ。
C言語を扱えば、こういった問題は全てコンパイラーが自動判別してアセンブラーソースを作ってくれますから、何も考えなくてよくなりますが、アセンブラーで苦労をして初めて、C言語のありがたさが分かるものです。
ぜひ、PICのアセンブラーを十分に習得して、C言語にも挑戦してくださいね。
がんばってください。
No.2
- 回答日時:
差し支えなければ100h前後のプログラムを教えてもらえませんか?
MOVFxxx,W
ADDWFPCL,F
RETLWD'10'
RETLWD'20'
RETLWD'30'
RETLWD'40'
RETLWD'50'
RETLWD'60'
このようなプログラムが100hをまたいでいませんか?
No.1
- 回答日時:
16F84AのFlaashROMは000h~03FFh,0400h~1FFh未実装
200h特殊領域
2007h コンフィギューレーションワード
プログラムは0000h~03FFhに格納します、(リセット処理、割り込み処理先頭メモリを除く)ユーザーメモリスペースに格納
この場合ユーザーメモリスペース03FFh
をオーバーするコードを書いたので
正常にマシン語(バイナリー)に変換されない為暴走します
長いプログラムになる場合、ROM容量の多いPICを選択してください。
回答ありがとうございます。
16F88で確認しました。( 16F84AよりROMサイズが大 Page0: max. 07FFh )
プログラムがかかれている最終番地は
正常の場合、0105h で nop を1行追加し、暴走した場合、は 0106h でした。
プログラムエリアはまだまだ余裕と考えます
別の 16F88 でも試しましたが同様の結果でした。
16F84Aの場合も、上記とほぼ同じプログラムサイズで暴走が生じます。
何か設定忘れがあるのでしょうか。 その他・・・
以上 よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- サーバー 無料のレンタルサーバで、スクレイピング(?)はできますか? 2 2022/05/07 10:09
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- ノートパソコン Windows 10 動作改善方法 6 2023/04/26 22:30
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- その他(ブラウザ) IE・edgeで日増しに観られるサイトが減ってくる。 1 2022/10/04 22:40
- その他(プログラミング・Web制作) VBA 1 2023/01/19 16:19
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プロダクションコードとは?
-
初級者の質問――time_tについて
-
ubuntuでC++のGUIプログラム
-
マイコンからプログラムを読み...
-
共分散行列を求めるプログラム
-
指定したフォルダーを最前面表...
-
DirectShowでのカメラ画像
-
signalハンドラに引数を渡したい
-
PIC 初級プログラミング
-
SMC-4DL-PCIボードでのプログラム
-
Macターミナルで実行中のプログ...
-
DoEvents関数って何?
-
PICのPIN変化割り込みに...
-
緯度、経度の 10進法と 60進法...
-
逆コンパイルと逆アセンブルの...
-
Mac 乗数の入力方法
-
【C言語】if文内の演算子の優先...
-
c言語。 組み合わせ最適化問題...
-
バックグラウンドのプロセスの...
-
Windows10でDOSゲーム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
指定したフォルダーを最前面表...
-
vba listviewにおけるtextのAli...
-
プロダクションコードとは?
-
COBOLのS9タイプからXタイプへ...
-
C言語primeについて
-
マイコンからプログラムを読み...
-
2値化した画像の黒い部分のピク...
-
初級者の質問――time_tについて
-
Webプログラムってネイティブア...
-
c言語のサイコロを100回振って...
-
Arduino nano(アルドゥイーノ ...
-
Excel VBA で、データベースフ...
-
無限ループ中にある任意のキー...
-
processingで雪が積もるような...
-
プログラミングの問題と解答例...
-
三次元のグラフを書きたいので...
-
VBコンソールアプリ(.NET Frame...
-
gccでスタックオーバーフローの...
-
javaで辞書プログラムを作りたい.
-
アプリ終了時にタスクトレイか...
おすすめ情報