找回密码
 立即注册

QQ登录

只需一步,快速开始

点击进入授权页面

只需一步,快速开始

  • QQ空间
  • 回复
  • 收藏

参加活动: 0

组织活动: 0

该用户从未签到

xiaoheng6010 来自手机 新手上路 2017-10-12 10:35 楼主
大家好   我用来测方波的个数  方波大概200kHz,   用的中断上升沿计数  中断内只有一句  i++;  每次上升沿中断来了  i加1   主程序中用串口输出i的值到电脑上,就没有其他的语句了。   现在情况是丢数,不固定,   不知道中断响应时间为多少?200kHz是不是太高了?   后来我改用查询的方法测上升沿,效果一样。自我认为avr的指令够快了,200k的频率不至于测不到  望大家指点一二 ,谢谢
我记得在中断函数中是不能用serial print的,还有就是你的变量i是否声明为volatile类型。这两个问题是我所能想到的。
xiaoheng6010 来自手机 新手上路 2017-10-12 11:06
板凳
kirbyklein 发表于 2017-10-12 10:40
我记得在中断函数中是不能用serial print的,还有就是你的变量i是否声明为volatile类型。这两个问题是我所 ...

谢谢回答  串口发送在  loop中,变量i未声明volatile,10k的方波正常  只是到200k就不正常了
请问你的200khz频率是怎么生成的。
一个中断指令最少需要花2.625 us
还有serial在9600bps下发送一个字节需要1000 us
xiaoheng6010 来自手机 新手上路 2017-10-12 13:19
5#
kirbyklein 发表于 2017-10-12 12:01
请问你的200khz频率是怎么生成的。
一个中断指令最少需要花2.625 us
还有serial在9600bps下发送一个字节需 ...

200k脉动是车载cd按键板的输出信号的时钟脉冲,24个脉冲一组不停,直到松开按键。  示波器测大概200k,一个周期5us多点,串口每秒发送一次,现在我是按一下松开,计数就没准了,按理应该24的倍数。刚才测了下中断,手动触发中断,中断内让管脚高电平,从我触发到高电平出来5us,居然这么长。
中断程序中什么都不做就要花2.6us,在加上其它指令,估计是要好久,所以这么高的脉冲漏掉也很正常
xiaoheng6010 来自手机 新手上路 2017-10-12 14:57
7#
kirbyklein 发表于 2017-10-12 13:41
中断程序中什么都不做就要花2.6us,在加上其它指令,估计是要好久,所以这么高的脉冲漏掉也很正常 ...

中断里就一句 digitalWrite(5,1)   看来这一句就2us  跟51单片机一样了
xiaoheng6010 来自手机 新手上路 2017-10-12 15:00
8#
kirbyklein 发表于 2017-10-12 13:41
中断程序中什么都不做就要花2.6us,在加上其它指令,估计是要好久,所以这么高的脉冲漏掉也很正常 ...

avr应该一个时钟周期一条指令  按理来说不应该 是不是arduino的指令效率太低了?周查询方法也计不准脉冲
是不是arduino的指令效率太低了?

arduino更深的我也不是很懂。不过有篇文章你可以参考下:http://www.arduino.cn/thread-12468-1-5.html
基于Arduino的数字示波器
http://www.arduino.cn/thread-3703-1-1.html
如果以上内容对你有帮助,你可以通过打赏支持作者
12下一页
发新帖
发表评论
高级模式  
您需要登录后才可以回帖 登录 | 立即注册  
关闭

推荐主题 上一条 /2 下一条