
今までずっとアセンブラを使い開発していたのですが、XC8コンパイラ+MPLABで
C言語を使い開発したいと思っています。
以下の点について教えていただければ助かります。
・タイマー割り込みについて
アセンブラで書く場合、プリスケーラの設定などから計算して
一回の割り込み内で何命令まで書けるかがわかるため割り込みの最中に
再度割り込みが発生するようなことは避けられますが
Cで書く場合はどのように回避するのでしょうか?
・コンフィギュレーションの設定の仕方
アセンブラでは__CONFIG _HS_OSC & _CP_OFF ・・・のように書きますが
Cではどのように書くのでしょうか。
C言語はわかるので取っ掛かりの部分がわかれば後はすいすいいけると思うのですが。。。
上記とあわせてお勧めの書籍やページなどがありましたら教えていただけないでしょうか。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
PICマイコン事態も、そのコンパイラ環境での開発は経験がないですが、
一般的に、割り込み処理はリエントラントにしない(してもいいですがえらく複雑になる)と思いますので、多重割り込みを回避するために、
・チップ自体が、割り込み受付から復帰まで割り込み禁止になっている(割り込みからの復帰命令で割り込み禁止のステータスが変化する)
・割り込みルーチンの先頭で割り込み禁止して、処理から復帰するときに割り込み禁止解除する(割り込み禁止のレジスタを能動的に制御する)
のいずれかだと思います。
割り込み禁止・禁止解除などはC言語用のマクロなどが用意されていませんでしょうか?
チップのマニュアルと割り込み処理のアプリケーションノートやサンプルコードを参考にされるのが良いと思います。
また、割り込み処理内の処理時間については、C言語のまま見積もるのはちょっと難しいですが、
C言語で記述した割り込み処理の中間コード(アセンブラ)を吐き出して、ステート数を計算したりします。
参考になれば幸いです。
お礼が遅くなり申し訳ありません。
割り込み処理に関してはおっしゃるとおりです。
あれからいろいろ試してなんとか解決にいたりました。
タイマー割り込みを止めることなくフリーランさせる必要があったため
アドバイス頂いたようにアセンブラを確認し実際の処理数をカウントしてみました。
やはり最終的にはこうするしかないんですね・・・(^^;
コンフィグレーションビッツの設定についてですが後に参照された方のために記載しておきます。
以下のように設定します。
#pragma config CP = OFF, DEBUG = OFF, WRT = OFF, CPD = OFF, LVP = OFF, BOREN = OFF, PWRTE = ON, WDTE = OFF, FOSC = HS, CPD = OFF
設定できる項目に関してはmplabインストールディレクトリ内にリファレンスがありました。
当方の環境では
C:\Program Files\Microchip\xc8\v1.10\docs\chips
です。
KEIS050162さんご回答本当にありがとうございました。m(_。_。)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
auの携帯で「パケット通信中...
-
C言語について(PWM)
-
電車のドアの前での並び方
-
スーパーのレジで並んでいたら...
-
irqbalance って
-
逆コンパイルと逆アセンブルの...
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
バックグラウンドのプロセスの...
-
マイコンからプログラムを読み...
-
sendkeysにてALT+CTRL+INSERTを...
-
スレッドにて同一メモリの書き...
-
エクセルVBA 大容量CSVファイル...
-
COBOLのS9タイプからXタイプへ...
-
libjpegで1bppBMPをjpegに変換...
-
WriteFile()でのデータ送信がで...
-
ソケットを用いた1対多通信につ...
-
openGLで物体を半透明にして表...
-
VB.NETでMessageBoxを表示した...
-
win10で、正確な待ち時間の作り方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
電車で待機列の割り込みについ...
-
CPUの処理量を減らすコーデ...
-
スーパーのレジで並んでいたら...
-
このレジの並び方は間違ってま...
-
Amazonfireタブレットにわから...
-
CPU負荷率の安全な上限と計...
-
【組込み】割り込み中のstatic...
-
USJでの割り込み
-
VB6でSendKeyを利用したTab移動...
-
irqbalance って
-
インバウンドで迷惑している人...
-
VB.NET スレッドからのイベント...
-
デュアルCPUのパソコンでCPUを1...
-
Timerコンポーネントのインター...
-
C言語でPICマイコン開発
-
Arduinoのプログラムで質問です。
-
マイコンSH-2の割り込みを用い...
-
H8マイコンでの割り込み(シリ...
-
優先度順方式とプリエンプショ...
-
マイコン C言語 割り込み処理...
おすすめ情報