打印

定时器tim8问题

[复制链接]
2154|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
boyyuboy|  楼主 | 2010-7-15 11:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用tim8做了一个定时,系统主频为24MHz,定时器的时钟由VC3分频为0.1MHz,定时器的period设置为9,由P44口输出产生的时钟,产生的频率应该为10KHz,可是我做了一个定时器中断,程序如下:
void Timer8_1_ISR(void)
{
Timer8_1_Stop();
if((tim%300)==0)
  PWM8_1_Start();
else
  PWM8_1_Stop();
tim++;
Timer8_1_WritePeriod(9);
Timer8_1_Start();
}
中断执行中断之后P44口输出频率为1.8KHz,和初始设定的10KHz不一样,不清楚怎么回事,那位可以帮忙指点下?
沙发
jxin| | 2010-7-15 18:13 | 只看该作者
你p44是terminalcountout输出的?main()是什么?

使用特权

评论回复
板凳
boyyuboy|  楼主 | 2010-7-16 11:11 | 只看该作者
p44是terminalcountout的输出,主函数如下:
void main()
{
        DigInv_1_Start();
        DigInv_2_Start();
        PWM8_1_Start();
        Timer8_1_Start();
        Timer8_1_EnableInt();
        M8C_EnableGInt;
        while(1);
}
用PWM和两个反相器来驱动超声波发射头,用定时器控制超声波的发射时间。不加定时器中断的时候,P44输出为10KHz的频率,加中断之后输出变为1.8KHZ左右,上下浮动±0.4KHz。

使用特权

评论回复
地板
Go_PSoC| | 2010-7-16 12:25 | 只看该作者
谢谢boyyuboy对广告贴得抑制。已将广告贴删除,由于您发表帖子的时候用的引用,也将您的此帖删除,望请见谅

使用特权

评论回复
5
jxin| | 2010-7-16 13:05 | 只看该作者
p44是terminalcountout的输出,主函数如下:
void main()
{
        DigInv_1_Start();
        DigInv_2_Start();
        PWM8_1_Start();
        Timer8_1_Start();
        Timer8_1_EnableInt();
        M8C_EnableGInt;
        while(1);
}
用PWM和两个反相器 ...
boyyuboy 发表于 2010-7-16 11:11
Timer 中断触发后timer被停止了,又去处理pwm8了,所以timer的terminalcountout变了,应该是tim引起的0.4khz浮动

使用特权

评论回复
6
boyyuboy|  楼主 | 2010-7-16 14:27 | 只看该作者
在中断里面开启和关闭PWM引起了定时器的定时时间的变化,谢谢jxin的解答

使用特权

评论回复
7
jxin| | 2010-7-16 17:53 | 只看该作者
不客气:$

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝