首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教pwm级联的问题

请教pwm级联的问题

#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
void main(void)
{
DDRP = 0xff; //控制输出
PWME = 0x00; PWMPRCLK=PWMPRCLK_PCKA2_MASK;
PWMCLK=0x0; //A时钟源为通道0,1提供时钟信号 PWMPOL =PWMPOL_PPOL0_MASK|PWMPOL_PPOL1_MASK; //用s1口做1通道的时钟 先高电平
PWMCAE=0x0; //对齐方式默认 左对齐

PWMPER01 = 150; //
PWMDTY01 = 30;
PWMCNT01 =0x0;
PWME=0xff; //PWME_PWME0_MASK|PWME_PWME1_MASK; //PWM通道1输出


for(;;) {

}

}
为什么PWMPER01的值大于256就不能运行了呢?级联通道不是已经变成16位了吗?
头文件里头的定义也是word呀?
谢谢啊!
上面少了一句:PWMCTL=......
把整个project贴出来吧。
海纳百川  有容乃大

网速原因,project传不上去,把正确的程序贴出来吧

#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


void main(void)
{
DDRP = 0xff; //控制输出

PWME = 0x00; //disable PWM

PWMPRCLK = PWMPRCLK_PCKA2_MASK/PWMPRCLK_PCKA1_MASK|PWMPRCLK_PCKA0_MASK;//128分频

PWMCLK=0x0; //选择A时钟源为通道0,1提供时钟信号
//A口提供187500Hz的频率

PWMPOL =PWMPOL_PPOL0_MASK|PWMPOL_PPOL1_MASK; //用s1口做1通道的时钟 先高电平
PWMCAE=0x0; //对齐方式默认 左对齐
PWMCTL=PWMCTL_CON01_MASK; //0,1级联

PWMPER01 = 3750; //再进行3750分频,理论得到50HZ的信号
PWMDTY01 = 1875; //50%占空比
PWMCNT01 =0x0; //计数器设初值


PWME=0xff; //Enable PWM通道输出


for(;;) {

}

}

出现的问题已经解决,是pwmctl寄存器没有设置好。

调试程序的过程中还发现过这样的问题:
就是程序没有写进去,点TBDML菜单中的reset能工作,确定通信正常。我原还以为是程序出现了问题。
后来发现:TBDML菜单中少了很多选项,于是对component中的set target进行重新设置,后来就正常工作了。

希望我遇见的这个问题对新手有帮助吧。
忘记说了,f bus的频率为24MHz
返回列表