私はMicrochip C18コンパイラを使用していますが、割り込みが発生すると、ISRコードが実行されるまでにかなりの遅延があります。実験としてマイクロチップC18の通常の割り込みレイテンシとコンテキスト保存時間はどのくらいですか?
、これは私の主な機能である:割り込みハンドラとして
while(1)
{
LATAbits.LATA4 = 1;
LATAbits.LATA4 = 0;
}
、私はいくつかの例(それがこのように行われている理由私は知らない)からコピーされたこのコード使用しています:
を#pragma interrupt high_isr
void high_isr(void)
{
LATAbits.LATA4 = 1;
LATAbits.LATA4 = 1;
LATAbits.LATA4 = 0;
LATAbits.LATA4 = 1;
LATAbits.LATA4 = 1;
LATAbits.LATA4 = 0;
}
#pragma code high_vector=0x08
void interrupt_at_high_vector(void)
{
_asm GOTO high_isr _endasm
}
SPI経由でバイトを受信していますが、バイトが受信された直後にメインループが停止します。その後、ISRコードが実行される前に16.5μsの遅延が発生します。それは165命令サイクルです!
私は割り込みとし、それがさらに悪化、低優先度の割り込みを持つということに関連するいくつかのコンテキスト保存が存在しているはず。私は無効にしましたIPENと私は優先度の高いベクトルだけを使用しています。コンテキストを保存するための165命令は通常の持続時間ですか?
+1私はabuotを知っていましたが、実際には長時間かかる機能だと思っていました。優れたFAQ。 – AndreKR