智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2613|回复: 13
打印 上一主题 下一主题

问个简单的问题 关于pit

[复制链接]

8

主题

296

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6645

在线王奖章优秀会员奖章活跃会员奖章论坛元老奖章

威望
3468
贡献
1435
兑换币
2242
注册时间
2013-9-26
在线时间
871 小时
跳转到指定楼层
1#
发表于 2014-2-4 23:05:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的是 xs128  1ms进入一次中断,我想问的是进入中断程序以后,单片机仍然在1ms倒计时么?还是进了中断后停止计时,出了中断程序 再开始1ms计时。  如果我中断里面的程序执行时间超过了1ms那不是混乱了。。。 还是进入中断时候把中断关了再执行中断里面的程序然后执行完再打开?
回复

使用道具 举报

6

主题

354

帖子

0

精华

常驻嘉宾

菜鸟

Rank: 8Rank: 8

积分
3051
威望
1530
贡献
927
兑换币
1016
注册时间
2013-10-26
在线时间
297 小时
2#
发表于 2014-2-4 23:56:42 | 只看该作者
这个可以自己设置啊,你可以进入中段时候立马关掉总中断时能,然后中断的执行时间就不会计入到你所定的时间里啦~终端执行完了后再打开总中断,然后时间就会从这次结束开始计时,到下次开始为1ms
回复 支持 反对

使用道具 举报

8

主题

296

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6645

在线王奖章优秀会员奖章活跃会员奖章论坛元老奖章

威望
3468
贡献
1435
兑换币
2242
注册时间
2013-9-26
在线时间
871 小时
3#
 楼主| 发表于 2014-2-5 00:01:32 | 只看该作者
原来地球还在转 发表于 2014-2-4 23:56
这个可以自己设置啊,你可以进入中段时候立马关掉总中断时能,然后中断的执行时间就不会计入到你所定的时间 ...

3ks!
回复 支持 反对

使用道具 举报

15

主题

168

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2419
威望
1433
贡献
598
兑换币
530
注册时间
2014-1-13
在线时间
194 小时
4#
发表于 2014-2-5 11:42:39 | 只看该作者
原来地球还在转 发表于 2014-2-4 23:56
这个可以自己设置啊,你可以进入中段时候立马关掉总中断时能,然后中断的执行时间就不会计入到你所定的时间 ...

只是关掉总中断使能吗,那么执行中断的同时,PIT不也同时在计时吗,1ms以后只是不能够进入中断吧,等到中断服务程序执行完后,如果再开总中断的话,是不是它计时的时间不一定是1ms呢?这么说,设置1ms中断一次,并不一定等价于从上次中断服务到下一次的中断服务时间间隔不是1ms?亲,求回复
回复 支持 反对

使用道具 举报

18

主题

694

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
8526

活跃会员奖章优秀会员奖章

威望
4770
贡献
1202
兑换币
2431
注册时间
2013-5-15
在线时间
1277 小时
5#
发表于 2014-2-6 09:29:58 | 只看该作者
顶上去~
回复 支持 反对

使用道具 举报

6

主题

354

帖子

0

精华

常驻嘉宾

菜鸟

Rank: 8Rank: 8

积分
3051
威望
1530
贡献
927
兑换币
1016
注册时间
2013-10-26
在线时间
297 小时
6#
发表于 2014-2-7 17:02:52 | 只看该作者
gufeng 发表于 2014-2-5 11:42
只是关掉总中断使能吗,那么执行中断的同时,PIT不也同时在计时吗,1ms以后只是不能够进入中断吧,等到中 ...

我也说不太明白,你自己用示波器一看立马就知道了啊,很容易的啊
回复 支持 反对

使用道具 举报

15

主题

168

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2419
威望
1433
贡献
598
兑换币
530
注册时间
2014-1-13
在线时间
194 小时
7#
发表于 2014-2-7 17:38:38 | 只看该作者
原来地球还在转 发表于 2014-2-7 17:02
我也说不太明白,你自己用示波器一看立马就知道了啊,很容易的啊

好吧,我们实验室只有一个示波器,还不能用了
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

高级会员

Rank: 4

积分
642
威望
311
贡献
209
兑换币
191
注册时间
2013-9-14
在线时间
61 小时
8#
发表于 2014-2-7 19:18:20 | 只看该作者
本帖最后由 hjhee 于 2014-2-7 19:22 编辑

PIT模块自己有个计时器(timer),一个计数器载入一个数值,每隔一个固定周期,计数器自减一。
待计数器的值减至0的时候,在下一个周期到来时,会发出一个中断请求,同时计数器重新载入一个数值。这个模块是独立工作的。

因此我想PIT中断请求的时间间隔和是否屏蔽总中断无关,关掉总中断仅仅是不处理这个中断请求而已。
回复 支持 反对

使用道具 举报

15

主题

168

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2419
威望
1433
贡献
598
兑换币
530
注册时间
2014-1-13
在线时间
194 小时
9#
发表于 2014-2-7 19:40:42 | 只看该作者
hjhee 发表于 2014-2-7 19:18
PIT模块自己有个计时器(timer),一个计数器载入一个数值,每隔一个固定周期,计数器自减一。
待计数器的值 ...

亲,我也认为应该是这样的,但是得验证验证。如何验证呢?如何才能知道两个中断服务程序之间的时间间隔是不一定相同的呢?一般来说设置的PIT时间远远大于中断服务程序执行的时间。如何验证是个难题吧?
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

高级会员

Rank: 4

积分
642
威望
311
贡献
209
兑换币
191
注册时间
2013-9-14
在线时间
61 小时
10#
发表于 2014-2-7 19:50:23 | 只看该作者
gufeng 发表于 2014-2-7 19:40
亲,我也认为应该是这样的,但是得验证验证。如何验证呢?如何才能知道两个中断服务程序之间的时间间隔是 ...

可以在PIT的ISR里面写一个延时函数看看效果,例如B0接LED灯
void pit0_isr(void){
    int i;
    for(i=0; i<10000000; ++i);
    gpio_toggle(PORTB, 0);
    PIT_FLAG_CLEAR(0);
}
对比ISR执行语句数与LED的闪烁时间间隔,看看有什么发现。

回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 13:49 , Processed in 0.108425 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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