智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1473|回复: 2
打印 上一主题 下一主题

OC功能用法!

[复制链接]

3

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
285
QQ
威望
216
贡献
59
兑换币
24
注册时间
2011-5-22
在线时间
5 小时
跳转到指定楼层
1#
发表于 2013-3-27 09:40:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位大神怎样实现一个定时器中用两个OC通道,都需要进去中断,这两个中断如何配合?那个设两个比较器中的比较值不知道该怎么搞!

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
18
威望
12
贡献
6
兑换币
5
注册时间
2013-3-27
在线时间
0 小时
2#
发表于 2013-3-27 21:01:11 | 只看该作者
为啥用两个中断呢?
如果两个中断实现的功能相同,且是顺序关系,完全可以使用一个中断。

此外,中断之间通常只能通过全局变量配合。如果两个中断耦合很强的呀,在设计上仔细斟酌一下,是否设计有问题。

对于OC中断,通常单片机有很多通道,每个通道都有自己的比较值寄存器,所以自己设置自己通道的就可以。比如比较寄存器一般定义为 TCn,其中n是通道号,比如0通道是TC0,1通道是TC1……。自由运行的那个定时器通常单片机只有一个,比如TCNT之类的,也有有两个或者多个的,但方法都一样,比如有10个通道的OC,0-7用一个TCNT0,8-9用TCNT1。

对于比较值设置都比较简单,自己设置自己就可以,例如:
通道0—— TC0 = TCNT+200;
通道0—— TC1 = TCNT+400;
就可以,他们之间没有影响。

至于中断号,通常每个通道对应一个,这个手册里面会有的,看中断部分就可以查到。也有多个中断源使用一个中断号的,这个时候有对应的寄存器(状态等)可以判断是哪个中断产生,但中断源类型一般都相同。比如0C0,OC1用一个中断号。当然这也有例外,不同中断源使用同一个中断号,但都会有对应寄存器可以判断中断发生的原因。
回复 支持 反对

使用道具 举报

3

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
285
QQ
威望
216
贡献
59
兑换币
24
注册时间
2011-5-22
在线时间
5 小时
3#
 楼主| 发表于 2013-4-21 16:13:18 | 只看该作者
hlls 发表于 2013-3-27 21:01
为啥用两个中断呢?
如果两个中断实现的功能相同,且是顺序关系,完全可以使用一个中断。

谢谢!刚刚接触单片机编程,正在学习中,懂了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 09:31 , Processed in 0.049846 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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