请帮看一下程序。

[复制链接]
 楼主| xcq 发表于 2007-6-15 16:53 | 显示全部楼层 |阅读模式
芯片是dsPIC30f4011,我用它的PWM发生器做个100K的PWM波,但是程序执行后这个波为18.3K,请问是什么原因。还有我用的是自由模式工作,为什么时基周期寄存器和占空比寄存器是相同值时输出占空比为50%的方波,我看它的资料上不应该是占空比寄存器的值是时基周期寄存器的一半时才对应50%的吗?<br /><br />#include&nbsp;&quot;p30f4011.h&quot;<br /><br />#define&nbsp;Fcy&nbsp;&nbsp;&nbsp;&nbsp;40000000.0<br />#define&nbsp;Fpwm&nbsp;100000.0<br />main()<br />{<br />&nbsp;PWM_INI();<br />&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;Nop();}<br />}<br /><br />void&nbsp;PWM_INI(void)<br />{<br />&nbsp;<br />&nbsp;SRbits.IPL=7;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关中断<br />&nbsp;PTCON=0x8000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PWM时基控制寄存器<br />&nbsp;PTMR=0x0000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PWM时基寄存器<br />&nbsp;PTPER=Fcy/(Fpwm*4)-1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PWM时基周期寄存器<br />&nbsp;PWMCON1=0x0011;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PWM控制寄存器1,PWM1H:PWM1L为互补输出<br />&nbsp;PDC1=Fcy/(Fpwm*4);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PWM占空比寄存器<br />&nbsp;IFS2bits.PWMIF=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PWM中断标志清0<br />&nbsp;IEC2bits.PWMIE=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//允许PWM中断<br />&nbsp;IPC9bits.PWMIP=7;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PWM中断优先级为7<br />&nbsp;SRbits.IPL=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//开中断<br />&nbsp;<br />}<br /><br />void&nbsp;__attribute__((__interrupt__))&nbsp;_PWMInterrupt(void)<br />{<br />&nbsp;&nbsp;IFS2bits.PWMIF=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PWM中断标志清0<br />&nbsp;<br />}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

xcq

7

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部