OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 922|回复: 31

定时器中断里面设置溢出时间为0.5us,但是用示波器打了一下,时间将近是0.5us的八倍,求各路大神指导。

[复制链接]

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
发表于 2017-11-14 10:47:52 | 显示全部楼层 |阅读模式
10金钱
我想通过定时器4中断来传输一组20位的数据。没0.5us溢出一次,执行一次中断服务函数,然后传输一位数据。同时用了定时器2和定时器3的PWM功能来输出两组时钟,这两组PWM波我在示波器上打了一下,显示是正确的。其中一组PWM波输出的是2M的波,所以应该是这一组2M的波产生20个周期的波的时间里,定时器4产生20次溢出,执行20次中断函数。但是我通过示波器看的是定时器中断执行的时间比20个2M的PWM波产生的时间长太多了。然后我改变20位数据装载值,让他输出方波,发现周期好像是设定的8倍左右。我的定时器中断函数主函数见图。请各路大神和原子哥指点迷津啊。

两组PWM波

两组PWM波

2M PWM波与定时器4产生波的对比

2M PWM波与定时器4产生波的对比

重设装载值与2M PWM对比

重设装载值与2M PWM对比

定时器设置函数

定时器设置函数

中断服务函数

中断服务函数

主函数

主函数

最佳答案

查看完整内容[请看2#楼]

STM32的中断无法响应0.5us的处理。 中断最多到200K左右,也就是5us以内,就会有比较大问题了。 换方法。
回复

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128204
金钱
128204
注册时间
2010-12-1
在线时间
1132 小时
发表于 2017-11-14 10:47:53 | 显示全部楼层
天人一口12 发表于 2018-1-3 18:03
原子哥,用spi呢?模拟spi可以实现2MHZ的传输速度吗?

STM32的中断无法响应0.5us的处理。
中断最多到200K左右,也就是5us以内,就会有比较大问题了。
换方法。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

52

主题

482

帖子

0

精华

高级会员

Rank: 4

积分
843
金钱
843
注册时间
2014-11-18
在线时间
145 小时
发表于 2017-11-14 11:58:53 | 显示全部楼层
大概说一下你想实现什么,不然看你这么多内容很累的。
自己选择的路,成家前走完。
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-14 13:35:09 来自手机 | 显示全部楼层
aiyeba 发表于 2017-11-14 11:58
大概说一下你想实现什么,不然看你这么多内容很累的。

就是想要一个gpio口在10us里面传输20位数据,每一位0.5us,只要能实现这个,其他的都好办了
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-14 15:15:37 来自手机 | 显示全部楼层
正点原子公众号
我感觉这个中断函数也不是很长啊
回复

使用道具 举报

  离线 

14

主题

388

帖子

0

精华

高级会员

Rank: 4

积分
697
金钱
697
注册时间
2015-3-26
在线时间
127 小时
发表于 2017-11-14 15:24:04 | 显示全部楼层
分频系数 ,
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-14 15:26:35 来自手机 | 显示全部楼层
xyl210xyl 发表于 2017-11-14 15:24
分频系数 ,

分频系数我没有做更改,而且我用定时器2输出的那个2M的pwm波就是正常的啊
回复

使用道具 举报

  离线 

52

主题

482

帖子

0

精华

高级会员

Rank: 4

积分
843
金钱
843
注册时间
2014-11-18
在线时间
145 小时
发表于 2017-11-14 15:34:59 | 显示全部楼层
天人一口12 发表于 2017-11-14 15:26
分频系数我没有做更改,而且我用定时器2输出的那个2M的pwm波就是正常的啊

你确定定时器  是0.5s中端一次?
自己选择的路,成家前走完。
回复

使用道具 举报

  离线 

4

主题

258

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1618
金钱
1618
注册时间
2015-10-17
在线时间
180 小时
发表于 2017-11-14 15:45:57 | 显示全部楼层
0.5us时间太短了,time中断函数运行也要时间啊
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-14 16:59:36 来自手机 | 显示全部楼层
hgr211 发表于 2017-11-14 15:45
0.5us时间太短了,time中断函数运行也要时间啊

是有些短,但是长八倍也太不正常了吧
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-14 17:05:55 来自手机 | 显示全部楼层
aiyeba 发表于 2017-11-14 15:34
你确定定时器  是0.5s中端一次?

arr和psc都赋值5,和定时器有关吗?我用的是定时器4
回复

使用道具 举报

  离线 

59

主题

4730

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
5702
金钱
5702
注册时间
2012-11-26
在线时间
1093 小时
发表于 2017-11-14 17:09:33 | 显示全部楼层
0.5us  还得传数据  想想都有点蛋疼
道不同,不相与为谋
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-14 17:14:28 来自手机 | 显示全部楼层
jermy_z 发表于 2017-11-14 17:09
0.5us  还得传数据  想想都有点蛋疼

是啊,0.5us一位数据
回复

使用道具 举报

  离线 

59

主题

4730

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
5702
金钱
5702
注册时间
2012-11-26
在线时间
1093 小时
发表于 2017-11-14 17:21:43 | 显示全部楼层

自己按照波特率算算需要多久吧  0.5us  单片机光中断,不干别的了
道不同,不相与为谋
回复

使用道具 举报

  离线 

52

主题

482

帖子

0

精华

高级会员

Rank: 4

积分
843
金钱
843
注册时间
2014-11-18
在线时间
145 小时
发表于 2017-11-14 17:28:28 | 显示全部楼层

72MHZ/10   =   7.2Mhz

T=1/7.2us  =0.13888us      这个太快了     CPU反应不过来

定时器的极限好像是2us    1us都反应不过来  我这里指的是定时器中断
自己选择的路,成家前走完。
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-14 20:04:54 来自手机 | 显示全部楼层
aiyeba 发表于 2017-11-14 17:28
72MHZ/10   =   7.2Mhz

T=1/7.2us  =0.13888us      这个太快了     CPU反应不过来

可是我让它传输的数据完全可以传出来,波形很好,就是时长不对
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-14 21:08:52 来自手机 | 显示全部楼层
aiyeba 发表于 2017-11-14 15:34
你确定定时器  是0.5s中端一次?

((5+1)*(5+1))/72M=0.5us,不是吗
回复

使用道具 举报

  离线 

3

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2017-10-14
在线时间
26 小时
发表于 2017-11-14 21:41:48 | 显示全部楼层
天哪这么快的中断
回复

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128204
金钱
128204
注册时间
2010-12-1
在线时间
1132 小时
发表于 2017-11-15 00:47:26 | 显示全部楼层
CPU处理中断不要超过100Khz,否则严重影响运行效率。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

52

主题

482

帖子

0

精华

高级会员

Rank: 4

积分
843
金钱
843
注册时间
2014-11-18
在线时间
145 小时
发表于 2017-11-15 09:45:35 | 显示全部楼层
天人一口12 发表于 2017-11-14 21:08
((5+1)*(5+1))/72M=0.5us,不是吗

对的。是0。5us  我搞错了

不过,这个速度 中断每那么快处理不过来的。
自己选择的路,成家前走完。
回复

使用道具 举报

  离线 

52

主题

482

帖子

0

精华

高级会员

Rank: 4

积分
843
金钱
843
注册时间
2014-11-18
在线时间
145 小时
发表于 2017-11-15 10:09:45 | 显示全部楼层
天人一口12 发表于 2017-11-14 20:04
可是我让它传输的数据完全可以传出来,波形很好,就是时长不对

示波器能处理高频的波形。
自己选择的路,成家前走完。
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-15 16:03:59 | 显示全部楼层
正点原子 发表于 2017-11-15 00:47
CPU处理中断不要超过100Khz,否则严重影响运行效率。

原子哥 我今天又试了一下用systick延时函数来实现延时0.5us,传输一个数据,但是传输一位数的时间仍然是2M的PWM波的8—9倍。我这个思路也是有问题的吗?对于我这种想在10us里面传输20位数据的想法,原子哥你有什么建议吗
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-15 16:04:36 | 显示全部楼层
aiyeba 发表于 2017-11-15 10:09
示波器能处理高频的波形。

我今天又试了一下用systick延时函数来实现延时0.5us,传输一个数据,但是传输一位数的时间仍然是2M的PWM波的8—9倍。我这个思路也是有问题的吗?
回复

使用道具 举报

  在线 

53

主题

608

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1707
金钱
1707
注册时间
2015-6-1
在线时间
253 小时
发表于 2017-11-15 16:10:18 | 显示全部楼层
天人一口12 发表于 2017-11-15 16:03
原子哥 我今天又试了一下用systick延时函数来实现延时0.5us,传输一个数据,但是传输一位数的时间仍然是2 ...

兄弟,0.5us,还想传数据就换思路吧。这种单片机0.5us就只能执行几个nop而已。中断一次要几个机器周期,执行传输的代码几个机器周期。怎么可能执行过来呢。就算是5us都不太可能。
自在随心
回复

使用道具 举报

  离线 

15

主题

149

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
396
金钱
396
注册时间
2014-4-29
在线时间
184 小时
发表于 2017-11-15 17:46:23 | 显示全部楼层
0.5us就是接近2M的bps,还是20位的定制过的数据帧格式,而且接收要求都这么高,数据处理的实时性要求只能更高。
要是比较通用的功能,不如找找有没有相关的ASIC;要是没有的话也可以用FPGA。
回复

使用道具 举报

  离线 

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2017-11-12
在线时间
18 小时
发表于 2017-11-15 18:05:38 | 显示全部楼层
0.5us,不如你算一下用了几个操作。72M的频率,1us 最多72条指令,你的中断都不止这点了
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-11-15 21:23:58 来自手机 | 显示全部楼层
yuzeyuan1 发表于 2017-11-15 16:10
兄弟,0.5us,还想传数据就换思路吧。这种单片机0.5us就只能执行几个nop而已。中断一次要几个机器周期, ...

今天又用了状态查询,72M/2M=36,这样想delay_us(1)来延时0.5us,示波器现实的波形的时间还是长啊,8~9倍的长度。想用一个引脚输出2M的pwm波来,然后用上升沿驱动数据另一个引脚传输,不知道这个思路可不可行啊。
回复

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128204
金钱
128204
注册时间
2010-12-1
在线时间
1132 小时
发表于 2017-11-16 01:11:01 | 显示全部楼层
天人一口12 发表于 2017-11-15 16:03
原子哥 我今天又试了一下用systick延时函数来实现延时0.5us,传输一个数据,但是传输一位数的时间仍然是2 ...

不要用中断。用DMA,或者其他,比如SPI接口。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2017-12-29 09:32:18 | 显示全部楼层
正点原子 发表于 2017-11-16 01:11
不要用中断。用DMA,或者其他,比如SPI接口。

原子哥,打扰你一下。就是我想问问换用STM32F429芯片可不可以实现,使用定时器中断的方法,在10us时间里传输20位的数据。最近看到一些论文上有说用F429芯片使用这个方法实现的,所以想向你咨询一下,打扰之处十分抱歉。
回复

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128204
金钱
128204
注册时间
2010-12-1
在线时间
1132 小时
发表于 2017-12-30 01:30:27 | 显示全部楼层
天人一口12 发表于 2017-12-29 09:32
原子哥,打扰你一下。就是我想问问换用STM32F429芯片可不可以实现,使用定时器中断的方法,在10us时间里 ...

定时器中断速率不能太快。建议你用DMA传输
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2018-1-3 18:03:44 来自手机 | 显示全部楼层
正点原子 发表于 2017-12-30 01:30
定时器中断速率不能太快。建议你用DMA传输

原子哥,用spi呢?模拟spi可以实现2MHZ的传输速度吗?
回复

使用道具 举报

  离线 

6

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-11-4
在线时间
61 小时
 楼主| 发表于 2018-1-4 11:24:23 | 显示全部楼层
正点原子 发表于 2017-11-14 10:47
STM32的中断无法响应0.5us的处理。
中断最多到200K左右,也就是5us以内,就会有比较大问题了。
换方法 ...

再一次打扰原子哥一下,是准备换方式,用模拟SPI的方式可以实现传输速度2MHZ吗?
回复

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-6-21 16:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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