智能车制作

标题: OC功能用法! [打印本页]

作者: 709632728    时间: 2013-3-27 09:40
标题: OC功能用法!
请教各位大神怎样实现一个定时器中用两个OC通道,都需要进去中断,这两个中断如何配合?那个设两个比较器中的比较值不知道该怎么搞!

作者: hlls    时间: 2013-3-27 21:01
为啥用两个中断呢?
如果两个中断实现的功能相同,且是顺序关系,完全可以使用一个中断。

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

对于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用一个中断号。当然这也有例外,不同中断源使用同一个中断号,但都会有对应寄存器可以判断中断发生的原因。
作者: 709632728    时间: 2013-4-21 16:13
hlls 发表于 2013-3-27 21:01
为啥用两个中断呢?
如果两个中断实现的功能相同,且是顺序关系,完全可以使用一个中断。

谢谢!刚刚接触单片机编程,正在学习中,懂了





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2