极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 28260|回复: 7

arduino进入中断delay函数失效?

[复制链接]
发表于 2014-10-28 23:32:18 | 显示全部楼层 |阅读模式
今天琢磨arduino中断的时候,发现了一个很奇葩的现象,那就是:arduino进入中断后,delay函数的运行时间被缩短了!中断函数里面的delay(5000)运行时间居然比250毫秒还要短!这究竟是怎么回事?求大神解答,我都搞了一晚上了

下面上代码

  1. void setup() {
  2.   pinMode(13,1);
  3.   pinMode(7,1);
  4.   attachInterrupt(0,interrupt,FALLING);
  5. }

  6. //下面这个中断函数运行用了4秒不到的时间
  7. void interrupt(void)
  8. {   
  9.   for(int i=0;i<10;i++)
  10.   {
  11.     digitalWrite(7,1);
  12.     delay(5000);//时间好像被压缩了?
  13.     digitalWrite(7,0);
  14.     delay(5000);//时间好像被压缩了?
  15.   }
  16. }

  17. boolean state=true;
  18. void loop() {
  19.   digitalWrite(13,state);
  20.   state=!state;
  21.   delay(250);//一切正常
  22. }

复制代码
回复

使用道具 举报

发表于 2014-10-29 00:17:03 | 显示全部楼层
interrupt 內的程序應該是盡量簡單的.

而且, 官網早已清楚說明:
Inside the attached function, delay() won't work and the value returned by millis() will not increment.
回复 支持 反对

使用道具 举报

发表于 2014-10-29 14:53:01 | 显示全部楼层
本来中断就是短频快的东西,一般这种单CPU单线程执行的设计中,都不希望在中断中做太多事,做太多事,其它事情都会被阻塞在哪里。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-29 19:47:16 来自手机 | 显示全部楼层
Super169 发表于 2014-10-29 00:17
interrupt 內的程序應該是盡量簡單的.

而且, 官網早已清楚說明:

原来如此!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-29 19:48:40 来自手机 | 显示全部楼层
pencilstart 发表于 2014-10-29 14:53
本来中断就是短频快的东西,一般这种单CPU单线程执行的设计中,都不希望在中断中做太多事,做太多事,其它事 ...

你这么说我就懂了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-29 19:50:40 来自手机 | 显示全部楼层
Super169 发表于 2014-10-29 00:17
interrupt 內的程序應該是盡量簡單的.

而且, 官網早已清楚說明:

可是delay的数值足够大的话,还是能够产生可观的延时,官网不是说delay不会工作吗?
回复 支持 反对

使用道具 举报

发表于 2014-10-29 22:50:10 | 显示全部楼层
a1039752256 发表于 2014-10-29 19:50
可是delay的数值足够大的话,还是能够产生可观的延时,官网不是说delay不会工作吗?

delay() won't work - 可以解作做不到原來應該做的事.

例如 delay(10000) 原來是空等 10 秒, 現在變成只等 1 秒, 難道還可以說成 delay still work?
只要做不出原來應該有的效果, 就已經是有問題, 可以說是 won't work 了.
或者, 如果說成 delay() won't work as usual 你會比較接受吧.  不要過於咬文嚼字, 重點是 delay 不能正常地用.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-30 22:47:40 来自手机 | 显示全部楼层
Super169 发表于 2014-10-29 22:50
delay() won't work - 可以解作做不到原來應該做的事.

例如 delay(10000) 原來是空等 10 秒, 現在變成 ...

好吧,我懂了,谢谢你
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 10:58 , Processed in 0.088796 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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