PICマイコン 割り込みの実行時間について、教えてください。
PICマイコン初心者です。
いろんな方々のプログラム例を参照させてもらっています。
PIC18F1320 を使って、外部割り込みを試していますが、トリガー信号の立ち上が入るタイミングで、割り込み処理を行いますが、トリガー信号から、割り込み動作Hが立ち上がりのが、遅くて困っております。トリガー信号から、遅れが少なくなる方法を教えてください。下記に現在のプログラ C言語を示します。
・ポートRB1の外部割込 立ち上がりトリガー。
・ポートRB0、RB2の状態をbstatに入れてIF文で、出力RB6 Hを出力したい。
・トリガー立ち上がりから、約2usecも遅れてRB6がHに。遅延を出来るだけ少なくしたい。
・ if (bstat==0)時で約2usec、if (bstat==3)時で約4usecと差が出るのも、改善したい。
#pragma code high_vector=0x8 //高位レベル割り込み
void high_interrupt (void){
_asm
GOTO high_isr
_endasm
}
#pragma code //デフォルトコードセクションに戻る
#pragma interrupt high_isr //割り込み処理関数宣言
void high_isr (void){
INTCON3bits.INT1IE=0; //外部割込みINT1の禁止
// INTCONbits.PEIE=0; //低位割り込み禁止
INTCONbits.GIE=0; //全割り込み禁止
INTCON3bits.INT1IF=0; //INT1の割り込みフラグをリセット
if (bstat==0){
LATBbits.LATB6=1; //
Delay1TCY();//wait
Delay1TCY();//wait
Delay1TCY();//wait
LATBbits.LATB6=0; //
Delay1TCY();//wait
Delay1TCY();//wait
Delay1TCY();//wait
}
else if(bstat==1){
LATBbits.LATB6=1; //
Delay1TCY();//wait
Delay1TCY();//wait
LATBbits.LATB6=0; //
Delay1TCY();//wait
Delay1TCY();//wait
}
else if(bstat==2){
LATBbits.LATB6=1; //
Delay1TCY();//wait
LATBbits.LATB6=0; //
Delay1TCY();//wait
}
else if(bstat==3){
LATBbits.LATB6=1; //
Delay1TCY();//wait
LATBbits.LATB6=0; //
Delay1TCY();//wait
}
INTCON3bits.INT1IE=1; //外部割込みINT1の許可
// INTCONbits.PEIE=1; //低位割り込み許可
INTCONbits.GIE=1; //全割り込み許可
}
// メインプログラム
void main (void){
TRISB = 0b00000111; // RB0/1/2:input
TRISA = 0xFF; // ALL A input
//PORTB = 0;
PORTA = 1;
bstat= ((PORTBbits.RB0+0)+(PORTBbits.RB2*2));// RB0とRB2の状態を読み込み
OpenRB1INT(PORTB_CHANGE_INT_ON & //ポートRB1の外部割込みオン
RISING_EDGE_INT & //立上りエッジでオン
PORTB_PULLUPS_OFF //Bポートの抵抗プルアップOFF
);
RCONbits.IPEN=1; //割り込み優先順位制御ON(0:優先順位制御OFF)
INTCON3bits.INT1IP=1; //INT1の割り込みを高順位割り込みにセット
INTCON3bits.INT1IE=1; //INT1の割り込みを許可
INTCON2bits.INTEDG1=1; //立上がりエッジでオン
// INTCONbits.PEIE=1; //低位割り込み許可
INTCONbits.GIE=1; //全割り込み許可
while (1)
PIC関係サイトを探しても、割り込みでの遅れ時間については、ヒントがありませんでした。
相当な遅れは、あきらめるしかないのでしょうか?
ご存知の方、アドバイスをお願い致します。
No.1ベストアンサー
- 回答日時:
動作クロック等もわからないので、遅延時間の妥当性は何とも言えません。
ソースを見る限り、特に問題無さそうですが・・・
簡単な処理なのでアセンブラで書かれれば如何?
if文は後になるほど遅延するのは仕方ないですが、こんな場合はswitch文を使いましょう。
組込では、if文に比べてswitch文の方が高速処理なのは通説です。
アセンブルしたソースを眺めてみればわかります。
こんばんは。早速のご回答、ありがとうございました。
使用PIC:PIC18F1320 周波数40MHZ(実行10MHZ)です。
質問したプログラムで、トリガー信号から、1.5usecで、出力開始されています。
switch文にトライしましたが、うまく、コンパイルしません。
下記のGOTOの部分をswitch~caseで、ポートRB0、RB2の状態をbstatの状態で、割り込みパターンを
出力させたいと思っていますが、コンパイルできないで困っています。
switch文設定ができていないと考えています。
間違いがあれば、アドバイスをお願い致します。
void high_interrupt (void){
_asm
GOTO high_isr
_endasm
}
ADコンバータ使用なら、アナログ電圧設定で、複数波形が作成可能だが、非同期のため
使えないので、残念ですが、うまくいかないですね。
良い参考サイトでもあれば、あわせてご紹介をお願い致します。
よろしく、お願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
推しミネラルウォーターはありますか?
推しミネラルウォーターがあったら教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
pic 複数の割り込み関数 切り分けるコード
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
このレジの並び方は間違ってま...
-
PICで内部タイマーを使わずカウ...
-
電車で待機列の割り込みについ...
-
PICの外部クロックの12.8MHzで1...
-
USJでの割り込み
-
PIC18F14K50でmain処理が動作し...
-
スーパーのレジで並んでいたら...
-
マイコン C言語 割り込み処理...
-
AKI-H8/3048Fでのタイマ割り込み
-
C言語について(PWM)
-
CPUの処理量を減らすコーデ...
-
【組込み】割り込み中のstatic...
-
メルコの無線LANで割り込み...
-
CPU負荷率の安全な上限と計...
-
Macターミナルで実行中のプログ...
-
バックグラウンドのプロセスの...
-
C# シリアル通信でデータ受信...
-
緯度、経度の 10進法と 60進法...
-
C#でのpngからbmpへの変換について
-
プログラム実行中に強制終了
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スーパーのレジで並んでいたら...
-
電車で待機列の割り込みについ...
-
CPU負荷率の安全な上限と計...
-
駅のトイレでナイチンに邪魔さ...
-
pic 複数の割り込み関数 切り分...
-
CPUの処理量を減らすコーデ...
-
【組込み】割り込み中のstatic...
-
irqbalance って
-
このレジの並び方は間違ってま...
-
VB6でSendKeyを利用したTab移動...
-
USJでの割り込み
-
割り込みのカウントの仕方
-
PICのPWMの正しい使い方につい...
-
マイコン C言語 割り込み処理...
-
VB.net 割り込みの禁止
-
一定時間操作がなかったら、と...
-
電車のドアの前での並び方
-
PIC24F C言語プログラミングに...
-
H8SX/1655のタイマー割り込みに...
-
PICマイコン 割り込み実行時間...
おすすめ情報