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で質問しましょう!
似たような質問が見つかりました
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Amazonfireタブレットにわから...
-
スーパーのレジで並んでいたら...
-
一定時間操作がなかったら、と...
-
マイコン C言語 割り込み処理...
-
電車のドアの前での並び方
-
PICでのプログラムによるチャタ...
-
割り込み中に例外異常
-
システムの割り込みについて シ...
-
PICのPWMの正しい使い方につい...
-
複数の割込み処理からアクセス...
-
電車で待機列の割り込みについ...
-
PICによる7セグLED3桁制御
-
割り込み処理から引数を取得す...
-
【組込み】割り込み中のstatic...
-
VB.net 割り込みの禁止
-
USB機器からのデータ受信による...
-
Chat GPTに、課題として、二と...
-
Macターミナルで実行中のプログ...
-
TCP/IP通信時のサーバーからの受信
-
タスクマネージャーのプロセス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ショッピング
-
スーパーのレジで並んでいたら...
-
pic 複数の割り込み関数 切り分...
-
マイコン C言語 割り込み処理...
-
Amazonfireタブレットにわから...
-
CPUの処理量を減らすコーデ...
-
irqbalance って
-
CPU負荷率の安全な上限と計...
-
一定時間操作がなかったら、と...
-
電車で待機列の割り込みについ...
-
VB6でSendKeyを利用したTab移動...
-
(H8マイコン)タイマ割込で変更...
-
駅のトイレでナイチンに邪魔さ...
-
アセンブラのタイマー割り込み
-
PICのPIN変化割り込みに...
-
USJでの割り込み
-
H8マイコンで割り込みが任意の...
-
PIC16F84AのRBポート変化割り込...
-
AKI-H8/3048Fでのタイマ割り込み
-
H8マイコンでの割り込み(シリ...
おすすめ情報