割り込み処理
どうやら割り込みに入って出てくるまでに時間がかかる模様。
#include "mbed.h"
DigitalOut whileOut(p21);
DigitalOut intrOut(p22);
Ticker flipper;
void flip() {
    intrOut = !intrOut;
}
int main() {
    flipper.attach_us(&flip, 3);
    while(1) {
        whileOut = !whileOut;
    }
}
としたとき、main関数の最初、attach_usが4以下だと割り込み→次の割り込みの間のwhileOut = !whileOut;が呼び出されない。
- 黄色Ch1:whileOut、
- 緑Ch2:intrOut
flipper.attach_us(&flip, 1);のとき
flipper.attach_us(&flip, 2);のとき
flipper.attach_us(&flip, 3);のとき
flipper.attach_us(&flip, 4);のとき
 まだwhileループが実行されていない。
(ピンクは関係ありません)
まだwhileループが実行されていない。
(ピンクは関係ありません)
flipper.attach_us(&flip, 5);のとき
 やっとwhileループが実行された。
(ピンクは関係ありません)
やっとwhileループが実行された。
(ピンクは関係ありません)
flipper.attach_us(&flip, 6);のとき
こういう事??
 
 
よく分かりませんが、割り込みを発生させてintrOut = !intrOut;を実行して戻ってくるまでに4.34us程度かかる、ということは言えそうです。
2 comments on 割り込み処理:
Please log in to post comments.





これから割り込みを使ってエッジ間の時間を測定しようと思っていたので大変参考になりました。 ありがとうございます。