今までずっとアセンブラを使い開発していたのですが、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で質問しましょう!
似たような質問が見つかりました
- その他(パソコン・スマホ・電化製品) 腕時計の設定の仕方について 5 2022/08/21 13:40
- 教えて!goo 質問サイトで読解力がない奴と話すとイライラします。こういう人の対処法を教えてください。 22 2022/09/12 08:44
- 訴訟・裁判 以前通っていたやばい塾のGoogleのクチコミに下記の内容を書き込みたいのですが、名誉毀損にあたるか 1 2023/06/24 22:03
- 財務・会計・経理 銀行振込み明細書が領収書の代わりになる?! 9 2023/07/10 10:00
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- その他(保険) シャープと共同開発した「BCG高性能JH-WB182Eの保証書」に関しての疑義 3 2023/05/22 15:01
- 個人事業主・自営業・フリーランス インボイス制度は、クライアントごとに請求書を分ける事はできますか? 6 2023/04/03 14:22
- Android(アンドロイド) 画面の割れたスマートフォンをテレビやパソコンに写す方法を知りたいです… 4 2022/07/19 04:46
- 大学受験 長文失礼します 高3受験生女 愛知教育大学理科 (偏差値50 国立)志望です。 先週の共通テスト模試 5 2022/09/13 00:21
- 日本語 jlpt日本語能力試験 1 2023/02/13 12:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
V.B.6 多重Call用スプール作成...
-
pic 複数の割り込み関数 切り分...
-
電車乗車時、並んでいるのに割...
-
一定時間操作がなかったら、と...
-
PICのPIN変化割り込みに...
-
VB.NET スレッドからのイベント...
-
定周期での割り込み
-
マイコン C言語 割り込み処理...
-
組込みシステム多重割り込みプ...
-
VB6でSendKeyを利用したTab移動...
-
デュアルCPUのパソコンでCPUを1...
-
SH2のタイマ出力
-
Macターミナルで実行中のプログ...
-
バックグラウンドのプロセスの...
-
プログラミング ソースコード
-
C言語で、メモリを解放しないで...
-
緯度、経度の 10進法と 60進法...
-
TCP/IP通信時のサーバーからの受信
-
Excelでのセル内容の高速消去方法
-
C# シリアル通信でデータ受信...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPUの処理量を減らすコーデ...
-
pic 複数の割り込み関数 切り分...
-
【組込み】割り込み中のstatic...
-
USJでの割り込み
-
CPU負荷率の安全な上限と計...
-
ウォッチドッグタイマ(WDT)の...
-
電車乗車時、並んでいるのに割...
-
USB機器からのデータ受信による...
-
一定時間操作がなかったら、と...
-
Amazonfireタブレットにわから...
-
マイコン C言語 割り込み処理...
-
PICマイコンでエンコーダパルス...
-
電車で待機列の割り込みについ...
-
駅のトイレでナイチンに邪魔さ...
-
実行した後、どうしてもフリー...
-
電車のドアの前での並び方
-
V.B.6 多重Call用スプール作成...
-
H8マイコンでの割り込み(シリ...
-
VB.net 割り込みの禁止
-
割り込みについて
おすすめ情報