注册 登录
查看: 456|回复: 8

KL26,PWM不够用啊,怎么办?

[复制链接]
发表于 2014-7-3 00:39:17 | 显示全部楼层 |阅读模式
本帖最后由 robotong 于 2014-7-3 00:49 编辑

TPM总共有3组,TPM0用来控制两个电机1KHZ,TPM1和TPM2用来测速,现在我还需要一组来控制两个舵机(50HZ)。这改如何实现呢?LPTMR能用来做PWM输出吗?输出两路。

回复

使用道具 举报

发表于 2014-7-3 02:11:36 | 显示全部楼层
LPTMR 可以脉冲计数啊,只用1路 tpm来脉冲技术
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-3 09:13:04 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-3 02:11
LPTMR 可以脉冲计数啊,只用1路 tpm来脉冲技术

谢谢您的回复,问一下有没有KL26的LPTMR计数的例程哈?急求
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-3 09:25:08 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-3 02:11
LPTMR 可以脉冲计数啊,只用1路 tpm来脉冲技术

您好,山外KL26的LPTMR模块初始化和K60的一样,但手册上端口复用明显对不上号,请及时修正哈!
回复 支持 反对

使用道具 举报

发表于 2014-7-3 10:03:47 | 显示全部楼层
robotong 发表于 2014-7-3 09:25
您好,山外KL26的LPTMR模块初始化和K60的一样,但手册上端口复用明显对不上号,请及时修正哈!

看代码!!!!

\Board\inc\FIRE_PORT_cfg.h  (打开看看,很容易知道如何配置的)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-3 10:29:44 | 显示全部楼层
本帖最后由 robotong 于 2014-7-3 10:31 编辑
山外メ雲ジ 发表于 2014-7-3 10:03
看代码!!!!

\Board\inc\FIRE_PORT_cfg.h  (打开看看,很容易知道如何配置的)
如下是KL26您的例程中的代码MKL_lptmr.c
void lptmr_pulse_init(LPT0_ALTn altn, uint16 count, LPT_CFG cfg)
{
    // 开启模块时钟
    SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK;                        //使能LPT模块时钟

    //设置输入管脚
    if(altn == LPT0_ALT1)
    {
        port_init(PTA19, ALT6 );            //在PTA19上使用 ALT6
    }
    else if(altn == LPT0_ALT2)
    {
        port_init(PTC5, ALT4 );             //在PTC5上使用 ALT4
    }
    else                                    //不可能发生事件
    {
        ASSERT((altn == LPT0_ALT1 ) || (altn == LPT0_ALT2 ));   //设置管脚有误?
    }

    // 清状态寄存器
    LPTMR0_CSR = 0x00;                                          //先关了LPT,这样才能设置时钟分频,清空计数值等

    // 设置累加计数值
    LPTMR0_CMR  =   LPTMR_CMR_COMPARE(count);                   //设置比较值

    // 管脚设置、使能中断
    LPTMR0_CSR  =  (0
                    | LPTMR_CSR_TPS(altn)       // 选择输入管脚 选择
                    | LPTMR_CSR_TMS_MASK        // 选择脉冲计数 (注释了表示时间计数模式)
                    | ( cfg == LPT_Falling ?  LPTMR_CSR_TPP_MASK :   0  )  //脉冲计数器触发方式选择:0为高电平有效,上升沿加1
                    | LPTMR_CSR_TEN_MASK        //使能LPT(注释了表示禁用)
                    | LPTMR_CSR_TIE_MASK        //中断使能
                    //| LPTMR_CSR_TFC_MASK      //0:计数值等于比较值就复位;1:溢出复位(注释表示0)
                   );
}
红色部分代码,KL26中PTC5的LPTMR功能是在ALT3,您这里是ALT4,K60有两个输入,但是KL26有三个输入A19,C5,E17,但是我怎么改代码,都没成功,计数不正常!求帮助呀
回复 支持 反对

使用道具 举报

发表于 2014-7-3 10:42:49 | 显示全部楼层
【一天攻破KL26】BUG汇总 - 一天攻破K60 - 山外-vcan123论坛 http://www.vcan123.com/forum.php ... &extra=page%3D1
回复 支持 反对

使用道具 举报

发表于 2014-7-3 10:43:02 | 显示全部楼层
看一下bug汇总,有个lptmr 的bug的
回复 支持 反对

使用道具 举报

发表于 2014-7-3 10:43:20 | 显示全部楼层
之前发布的代码有bug
回复 支持 反对

使用道具 举报

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

本版积分规则

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