极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 迷你强

Arduino入门教程--第十九课--Arduino中断的使用

  [复制链接]
发表于 2014-7-1 11:34:32 | 显示全部楼层
Winston 发表于 2014-7-1 11:21
我说我一边中断一边串口输出结果,运行着运行着就没有任何反应了,是不是中断自己中断了处理程序,返回不 ...

理论上是
据我所知x86的每个硬件中断只保存一套寄存器状态,设计原理应该是一样的,不然内存都不够用。
回复 支持 反对

使用道具 举报

发表于 2014-8-10 11:58:58 | 显示全部楼层
b9ss 发表于 2014-6-29 21:08
试了下 发现个问题 在中断处理程序里调用noInterrupts是无效的。
调用detachInterrupt却可以。

还是多用多试试才行啊
回复 支持 反对

使用道具 举报

发表于 2014-9-2 10:14:00 | 显示全部楼层
b9ss 发表于 2014-6-29 21:08
试了下 发现个问题 在中断处理程序里调用noInterrupts是无效的。
调用detachInterrupt却可以。

层主很有探索精神嘛
回复 支持 反对

使用道具 举报

发表于 2014-9-18 19:45:20 | 显示全部楼层
这是外部中断,要是有讲内部中断(如串口中断)的就好了。
回复 支持 反对

使用道具 举报

发表于 2014-9-20 19:44:06 | 显示全部楼层
  digitalWrite(ledOut, state);    //把读取的状态赋予LED指示灯

  //模拟一个长的流程或者复杂的任务  
  for (int i = 0; i < 100; i++)
  {
    //延时10毫秒
    delay(10);
为什么要这样写?有什么用?
回复 支持 反对

使用道具 举报

发表于 2014-10-7 09:56:13 | 显示全部楼层
亦真亦幻 发表于 2014-9-20 19:44
digitalWrite(ledOut, state);    //把读取的状态赋予LED指示灯

  //模拟一个长的流程或者复杂的任务 ...

这只是模拟一个任务,当在执行这个任务的过程中,刚好外部中断触发了,这时单片机就把任务停下来,保存任务的断点,转而去执行中断的服务程序,执行完中断服务程序后,再从任务的断点接着执行。
回复 支持 反对

使用道具 举报

发表于 2014-10-11 22:12:13 | 显示全部楼层
你那LED不是链接在模拟端口吗,怎么回用digitalWrite()命令呢?
回复 支持 反对

使用道具 举报

发表于 2014-10-11 22:20:26 | 显示全部楼层
我还是没搞明白
回复 支持 反对

使用道具 举报

发表于 2015-1-29 17:32:33 | 显示全部楼层
这里“0(数字引脚2)和1(数字引脚3)”中的0和1是从哪里来的?

这个问题困扰好久了,烦请大神指教,感谢 !
回复 支持 反对

使用道具 举报

发表于 2015-2-12 14:06:50 | 显示全部楼层
m.mm 发表于 2015-1-29 17:32
这里“0(数字引脚2)和1(数字引脚3)”中的0和1是从哪里来的?

这个问题困扰好久了,烦请大神指教,感 ...

0和1是指uno板的两个外部中断编号,分别对应到实物板子的IO2,IO3。这个是硬件设计的规定。
回复 支持 反对

使用道具 举报

发表于 2015-2-15 13:05:46 | 显示全部楼层
flying03 发表于 2015-2-12 14:06
0和1是指uno板的两个外部中断编号,分别对应到实物板子的IO2,IO3。这个是硬件设计的规定。

这个编号应该是arduino 端口编号和IDE端口编号吧。
arduino程序允许使用arduino板上的端口编号和IDE的端口编号。
回复 支持 反对

使用道具 举报

发表于 2015-4-12 11:25:32 | 显示全部楼层
原来是这样
回复 支持 反对

使用道具 举报

发表于 2015-6-9 19:00:27 | 显示全部楼层
把中断附在了舵机控制的程序里,但是每次按中断触发按钮中断返回的时候程序都是从新开始执行的啊,没有从终端点开始,这是怎么回事?
回复 支持 反对

使用道具 举报

发表于 2015-7-16 08:57:43 | 显示全部楼层
赞一个,主函数和loop函数是啥关系,还有点模糊!
回复 支持 反对

使用道具 举报

发表于 2015-7-18 17:01:11 | 显示全部楼层
void setup()
{   pinMode(7,OUTPUT);
    attachInterrupt(0, left, LOW);
}
void loop()  
{   
   digitalWrite(7,HIGH);
   
}                  
void left()
{  
   digitalWrite(7,LOW);


}
以上程序是我理解中断用的   有一个问题 不懂  求大神指教
  我将中断0 设置为高电平   然后将中断0变成低电平  可是要等好几秒之后才执行中断(7号口灭) 再改成高电平的时候 能立即点亮      为什么中断响应的那么慢   中断返回很快。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 17:42 , Processed in 0.044092 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表