关于中断的请教
arduino能不能在中断中执行另一个中断,比如我一个按键按下发生中断,跳到中断程序, 在中断程序中也有一个中断。可以的,这就是所谓的“中断嵌套" 这个我曾经做过实验. 你可以把INT0跟INT1同时接在一个开关下. INT0跟INT1的触发事件分别点亮/熄灭各自的LED. 多次按下开关.两个LED都会亮灭. 帕米 发表于 2015-6-1 19:29 static/image/common/back.gif
这个我曾经做过实验. 你可以把INT0跟INT1同时接在一个开关下. INT0跟INT1的触发事件分别点亮/熄灭各自的LED ...
敢问,你接的开关程序上有木有做降噪滤波处理?
这里你说的灯的现象好像没有体现出“中断嵌套”的原理。 帕米 发表于 2015-6-1 19:29 static/image/common/back.gif
这个我曾经做过实验. 你可以把INT0跟INT1同时接在一个开关下. INT0跟INT1的触发事件分别点亮/熄灭各自的LED ...
你这个不叫中断嵌套,两个中断并列执行并没有嵌套。 PINKWALKMAN 发表于 2015-6-2 07:52 static/image/common/back.gif
敢问,你接的开关程序上有木有做降噪滤波处理?
这里你说的灯的现象好像没有体现出“中断嵌套”的原理。
没有, 用一上拉.或者一下拉电阻. 中断触发相反的电平.或者上升下降沿. 本帖最后由 帕米 于 2015-6-2 19:06 编辑
sanyouhi 发表于 2015-6-2 12:17 static/image/common/back.gif
你这个不叫中断嵌套,两个中断并列执行并没有嵌套。
好吧"并行" ,都能触发"并行"了 :lol 中断嵌套,那不对于MCU来说更是小KS. 再说AVR内部 肯定是链式处理的.
#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;
}
}
页:
[1]