智能车制作

 找回密码
 注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: e23
打印 上一主题 下一主题

冷火PWM与PIT结合不能正常输出

[复制链接]

1

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
682
威望
345
贡献
203
兑换币
219
注册时间
2013-6-23
在线时间
67 小时
11#
 楼主| 发表于 2014-4-8 14:06:37 | 只看该作者
暗影飞 发表于 2014-4-8 09:00
我可以肯定你们的PWM那里IO口初始化不对。

单个测试时没有问题的,就是PIT与PWM一结合就不能正常的输出
回复 支持 反对

使用道具 举报

1

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
682
威望
345
贡献
203
兑换币
219
注册时间
2013-6-23
在线时间
67 小时
12#
 楼主| 发表于 2014-4-8 14:08:46 | 只看该作者
暗影飞 发表于 2014-4-8 11:15
你把MCF_GPIO_PTAPAR寄存器的配置发来看看就知道了。

我加你QQ吧,我把底层发给你
回复 支持 反对

使用道具 举报

1

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
682
威望
345
贡献
203
兑换币
219
注册时间
2013-6-23
在线时间
67 小时
13#
 楼主| 发表于 2014-4-8 14:12:37 | 只看该作者
tonystark 发表于 2014-4-8 08:57
我去,你的问题好像跟我一样。我在PIT定时中断里面放了PWM函数(让车轮不转),结果,车轮根本停不下来。你 ...

我们单用PWM的时候没有问题,只要一用PIT之后,不管用PIT干什么,PWM就不能正常工作,
回复 支持 反对

使用道具 举报

1

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
682
威望
345
贡献
203
兑换币
219
注册时间
2013-6-23
在线时间
67 小时
14#
 楼主| 发表于 2014-4-8 15:00:36 | 只看该作者
暗影飞 发表于 2014-4-8 09:00
我可以肯定你们的PWM那里IO口初始化不对。

#include "PWM.h"
void djfan()
{
MCF_GPIO_PORTTJ|=PORTTJ4_ON ;
MCF_GPIO_PORTTJ&=PORTTJ5_OFF;
}
void djzheng()
{
MCF_GPIO_PORTTJ|=PORTTJ5_ON ;
MCF_GPIO_PORTTJ&=PORTTJ4_OFF;
}

void PWM_init(void)
{

MCF_GPIO_PTCPAR=MCF_GPIO_PTCPAR_DTIN0_PWM0    //PWMEn=1,使能 PWM 通道 n 输出
       |MCF_GPIO_PTCPAR_DTIN1_PWM2
       |MCF_GPIO_PTCPAR_DTIN2_PWM4;
                                            

MCF_GPIO_PTAPAR=MCF_GPIO_PTAPAR_ICOC0_PWM1
       |MCF_GPIO_PTAPAR_ICOC1_PWM3
       |MCF_GPIO_PTAPAR_ICOC2_PWM5;

      
//pwm Polarity Register
//PWM 极性寄存器 1:高,0:低
//PPOLn=1,PWM 通道 n 的信号在周期的开始时输出高电平,到达占空比计数后输出低电平;
MCF_PWM_PWMPOL=MCF_PWM_PWMPOL_PPOL0   
      |MCF_PWM_PWMPOL_PPOL1
      |MCF_PWM_PWMPOL_PPOL2
      |MCF_PWM_PWMPOL_PPOL3   //起始时输出高电平
      |MCF_PWM_PWMPOL_PPOL4
      |MCF_PWM_PWMPOL_PPOL5;

//pwm Clock select register:1-SA or SB  0-A or B
//PWM 时钟选择寄存器 1:SA / SB , 0:A / B
MCF_PWM_PWMCLK=MCF_PWM_PWMCLK_PCLK0
      |MCF_PWM_PWMCLK_PCLK1
      |MCF_PWM_PWMCLK_PCLK2
      |MCF_PWM_PWMCLK_PCLK3
      |MCF_PWM_PWMCLK_PCLK4
      |MCF_PWM_PWMCLK_PCLK5
;
//pwm prescale clock select register bit[6:4]PCKB  bit[2:0]PCKA
//PWM 预分频寄存器 fA=fBUS/2^PCKA,fB=fBUS/2^PCKB
MCF_PWM_PWMPRCLK=MCF_PWM_PWMPRCLK_PCKA(2)     //fA=fB=20M
     |MCF_PWM_PWMPRCLK_PCKB(2);

     MCF_PWM_PWME = 0; //只有当相应的 PWM 通道禁止时,才能进行设置对齐方式
     
     
//pwm center align enable register:1-center-aligned 0-left-aligned
//PWM 中心对齐使能寄存器    CAEn=1,PWM 脉冲对齐方式为中心对齐;CAEn=0,PWM 脉冲对齐方式为左对齐。
MCF_PWM_PWMCAE=MCF_PWM_PWMCAE_CAE0
      |MCF_PWM_PWMCAE_CAE1
      |MCF_PWM_PWMCAE_CAE2
      |MCF_PWM_PWMCAE_CAE3      //PWM 中心对齐  
      |MCF_PWM_PWMCAE_CAE4
      |MCF_PWM_PWMCAE_CAE5
;
//pwm control register:0-separate
//PWM 控制寄存器    CONxy=0,通道 x 与通道y是独立的8位PWM通道;CONxy=1,x与通道y合并为1路16位的 PWM 通道
// MCF_PWM_PWMCTL=0x00;
MCF_PWM_PWMCTL =MCF_PWM_PWMCTL_CON01
                |MCF_PWM_PWMCTL_CON23
                |MCF_PWM_PWMCTL_CON45  //合并为1路16位的PWM通道
                   &(~MCF_PWM_PWMCTL_PFRZ)              
                   &(~MCF_PWM_PWMCTL_PSWAI);                 
//pwm scale A&B register Clock SA=Clock A/2*PWMSCLA
//PWM 分频寄存器 A/B fSA=fA/(2*PWMSCLA)
MCF_PWM_PWMSCLA=2;  //设置时钟SA    fSA = 5M
MCF_PWM_PWMSCLB=2;  //设置时钟SB   fSB = 5M
//pwm channel counter register
//PWM 通道计数寄存器 (PWMCNTn)
//PWM 通道禁止时,相应通道的计数寄存器将停止计数,当 PWM 通道重新使能时,PWM计数器将从计数寄存器的值开始继续计数
MCF_PWM_PWMCNT0=0;  
MCF_PWM_PWMCNT1=0;
MCF_PWM_PWMCNT2=0;
MCF_PWM_PWMCNT3=0;
MCF_PWM_PWMCNT4=0;
MCF_PWM_PWMCNT5=0;

//pwm channel period register
//PWM 通道周期寄存器  (PWMPERn)
// 当 PWM 脉冲对齐方式为左对齐时:PWM 信号周期  =  周期寄存器值  ÷  时钟频率
//  当 PWM 脉冲对齐方式为中心对齐时:PWM 信号周期  =  周期寄存器值  ÷  时钟频率  ×  2   
MCF_PWM_PWMPER(0)=500;             //   1k               500             1M           
MCF_PWM_PWMPER(1)=500;             //   5k               100             1M
MCF_PWM_PWMPER(2)=500;             //   10k              50              1M
MCF_PWM_PWMPER(3)=500;             //   15k              33              1M
MCF_PWM_PWMPER(4)=1000>>8;          //   1k               2500            5M
MCF_PWM_PWMPER(5)=1000;              //   10k              250             5M

//pwm channel duty register
//PWM 通道占空比寄存器 (PWMDTYn)
//当 PWM 脉冲初始时输出高电平时:PWM 信号占空比  =         占空比寄存器值  ÷  周期寄存器值  ×  100%
//当 PWM 脉冲初始时输出低电平时:PWM 信号占空比  = (1  -  占空比寄存器值  ÷  周期寄存器值)  ×  100%
MCF_PWM_PWMDTY(0)=10;
MCF_PWM_PWMDTY(1)=20;
MCF_PWM_PWMDTY(2)=30;
MCF_PWM_PWMDTY(3)=40;  //PWM 信号占空比  =  占空比寄存器值  ÷  周期寄存器值
MCF_PWM_PWMDTY(4)=100>>8;
MCF_PWM_PWMDTY(5)=100;

//pwm shutdown register
//PWM 关闭寄存器
MCF_PWM_PWMSDN=MCF_PWM_PWMSDN_IF;

//PWM 使能寄存器 (PWME)
//PWMEn=1,使能 PWM 通道 n 输出; PWMEn=0,禁止 PWM 通道 n 输出。其中 n=0~7。
MCF_PWM_PWME=MCF_PWM_PWME_PWME0
    |MCF_PWM_PWME_PWME1
    |MCF_PWM_PWME_PWME2
    |MCF_PWM_PWME_PWME3
    |MCF_PWM_PWME_PWME4
    |MCF_PWM_PWME_PWME5;
}
/*============================================================================
函数名称:MotorRun
函数返回:无
参数说明:
功能概要:电机转动函数
=============================================================================*/
//倒转
void SteerUpdatePWM23(unsigned int PwmValue)
{
MCF_PWM_PWMDTY(2) = PwmValue>>8;
MCF_PWM_PWMDTY(3) = PwmValue;
}

void SteerUpdatePWM45(unsigned int PwmValue)
{
MCF_PWM_PWMDTY(4) = PwmValue>>8;
MCF_PWM_PWMDTY(5) = PwmValue;
}

回复 支持 反对

使用道具 举报

1

主题

45

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3699
QQ
威望
1663
贡献
912
兑换币
722
注册时间
2011-5-22
在线时间
562 小时
15#
发表于 2014-4-8 17:02:45 | 只看该作者
e23 发表于 2014-4-8 15:00
#include "PWM.h"
void djfan()
{

我已经在QQ里说了,你们的初始化不对,而且QQ里面给我发的还不一样。。。。。
MCF_GPIO_PTCPAR=MCF_GPIO_PTCPAR_DTIN0_PWM0    //PWMEn=1,使能 PWM 通道 n 输出
       |MCF_GPIO_PTCPAR_DTIN1_PWM2
       |MCF_GPIO_PTCPAR_DTIN2_PWM4;
                                            

MCF_GPIO_PTAPAR=MCF_GPIO_PTAPAR_ICOC0_PWM1
       |MCF_GPIO_PTAPAR_ICOC1_PWM3
       |MCF_GPIO_PTAPAR_ICOC2_PWM5;

我说了,这里不要这么写,看手册,用哪个功能就使能哪里,别用赋值语句,用位操作!
回复 支持 反对

使用道具 举报

17

主题

115

帖子

0

精华

高级会员

Rank: 4

积分
990
威望
546
贡献
312
兑换币
349
注册时间
2014-1-23
在线时间
66 小时
16#
发表于 2014-4-8 18:55:48 | 只看该作者
e23 发表于 2014-4-8 15:00
#include "PWM.h"
void djfan()
{

你的电机转动函数是怎么写出来的,给个思路吧。我一头雾水,不用知道该从何下手。。
回复 支持 反对

使用道具 举报

4

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
321
威望
167
贡献
96
兑换币
89
注册时间
2013-10-14
在线时间
29 小时
毕业学校
常州大学
17#
发表于 2014-4-10 17:16:32 | 只看该作者
先保证没有信号干扰锁相环频率都设置对了
回复 支持 反对

使用道具 举报

1

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
682
威望
345
贡献
203
兑换币
219
注册时间
2013-6-23
在线时间
67 小时
18#
 楼主| 发表于 2014-4-13 23:39:59 | 只看该作者
雷克斯丶LUX 发表于 2014-4-10 17:16
先保证没有信号干扰锁相环频率都设置对了

恩,是时钟设置的问题
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 14:29 , Processed in 0.050677 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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