本帖最后由 帕米 于 2015-6-2 19:06 编辑
sanyouhi 发表于 2015-6-2 12:17 
你这个不叫中断嵌套,两个中断并列执行并没有嵌套。
好吧"并行" ,都能触发"并行"了 中断嵌套,那不对于MCU来说更是小KS. 再说AVR内部 肯定是链式处理的.
[pre lang="arduino" line="1" file="test_INT0_INT1"]
#include "Arduino.h"
volatile uint32_t i,j,k=0,n=0;
void INT0_EVENT() {
k++;
digitalWrite(10, HIGH);
for(i=0; i< 200000;i++){
//_NOP();
}
digitalWrite(10, LOW);
for(i=0; i< 200000;i++){
//_NOP();
}
}
void INT1_EVENT() {
n++;
digitalWrite(11, HIGH);
for(j=0; j< 200000;j++){
//_NOP();
}
digitalWrite(11, LOW);
for(j=0; j< 200000;j++){
//_NOP();
}
}
void setup() {
Serial.begin(9600);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(13,OUTPUT);
attachInterrupt(0, INT0_EVENT, FALLING);
attachInterrupt(1, INT1_EVENT, RISING);
//替换成
//attachInterrupt(1, INT1_EVENT, FALLING);
//attachInterrupt(0, INT0_EVENT, RISING);
}
void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
if(k > 0){
Serial.print("INT0: ");
Serial.print(k);
Serial.print(", INT1: ");
Serial.println(k);
k = 0; n=0;
}
}
[/code] |