智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4443|回复: 10
打印 上一主题 下一主题

[电磁] 野火的AD程序 和我当前用的PWM程序 配置冲突 求大神解决

[复制链接]

10

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1017
威望
609
贡献
182
兑换币
160
注册时间
2012-6-16
在线时间
113 小时
跳转到指定楼层
1#
发表于 2013-6-12 15:23:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50贡献
//*================这是我用的PWM配置用于控制电机==================================================
//FTM2 通道0,1PWM输出初始化函数  频率20KHZ  PTA10 PTA11
//The edge-aligned mode is selected when (QUADEN = 0), (DECAPEN = 0), (COMBINE
//= 0), (CPWMS = 0), and (MSnB = 1).  
//K60P144M100SF2RM.pdf  P1011 39.4.6 Edge-Aligned PWM (EPWM) Mode
//The EPWM period is determined by (MOD - CNTIN + 0x0001) and the pulse width
//(duty cycle) is determined by (CnV - CNTIN).
//==========================================================================*/
void FTM2_init(void)
{
        // PTA8 K60P144M100SF2.pdf   第68页  8.1 K60 Signal Multiplexing and Pin Assignments
        PORTA_PCR10 = PORT_PCR_MUX(0x3)| PORT_PCR_DSE_MASK; // FTM is alt3 function for this pin  DSE=1高驱动  
        PORTA_PCR11 = PORT_PCR_MUX(0x3)| PORT_PCR_DSE_MASK; // FTM is alt3 function for this pin  DSE=1高驱动     
       
        SIM_SCGC3|=SIM_SCGC3_FTM2_MASK;         //使能FTM1时钟      
       
        //change MSnB = 1  
        FTM2_C0SC |= FTM_CnSC_ELSB_MASK;
        FTM2_C0SC &= ~FTM_CnSC_ELSA_MASK;
        FTM2_C0SC |= FTM_CnSC_MSB_MASK;

        FTM2_C1SC |= FTM_CnSC_ELSB_MASK;
        FTM2_C1SC &= ~FTM_CnSC_ELSA_MASK;
        FTM2_C1SC |= FTM_CnSC_MSB_MASK;   
       
        //FTM1_SC = FTM_SC_PS(0) | FTM_SC_CLKS(1);
        //FTM1_SC=0X0F;     
        FTM2_SC = 0x28; //not enable the interrupt mask,up-down counting mode,System clock,Divide by 0
        //FTM1_SC=0X1F;       //BIT5  0 FTM counter operates in up counting mode.
                                                //1 FTM counter operates in up-down counting mode.      
        //BIT43 FTM1_SC|=FTM1_SC_CLKS_MASK;
                                                //00 No clock selected (This in effect disables the FTM counter.)
                                                //01 System clock
                                                //10 Fixed frequency clock
                                                //11 External clock
        //BIT210 FTM1_SC|=FTM1_SC_PS_MASK;
                                                //100M          MOD=2000;   
                                                //000 Divide by 1---12KHZ     
                                                //001 Divide by 2--- 6KHZ
                                                //010 Divide by 4--- 3K
                                                //011 Divide by 8--- 1.5K
                                                //100 Divide by 16---750
                                                //101 Divide by 32---375
                                                //110 Divide by 64---187.5HZ
                                                //111 Divide by 128--93.75hz            
       
        FTM2_MODE |= FTM_MODE_WPDIS_MASK;      
        //BIT1   Initialize the Channels Output
        //FTMEN is bit 0, need to set to zero so DECAPEN can be set to 0
        FTM2_MODE &= ~1;
        //BIT0   FTM Enable
        //0 Only the TPM-compatible registers (first set of registers) can be used without any restriction. Do not use the FTM-specific registers.
        //1 All registers including the FTM-specific registers (second set of registers) are available for use with no restrictions.
       
        FTM2_OUTMASK=0XFC;   //0 Channel output is not masked. It continues to operate normally.
                                             //1 Channel output is not masked. It continues to operate normally.
       
        FTM2_COMBINE=0;      //Function for Linked Channels (FTMx_COMBINE)
        FTM2_OUTINIT=0;
        FTM2_EXTTRIG=0;      //FTM External Trigger (FTMx_EXTTRIG)
        FTM2_POL=0;          //Channels Polarity (FTMx_POL)
                                           //0 The channel polarity is active high.
                                           //1 The channel polarity is active low.     
        //Set Edge Aligned PWM
        FTM2_QDCTRL &=~FTM_QDCTRL_QUADEN_MASK;
        //QUADEN is Bit 1, Set Quadrature Decoder Mode (QUADEN) Enable to 0,   (disabled)
        //FTM0_SC = 0x16; //Center Aligned PWM Select = 0, sets FTM Counter to operate in up counting mode,
        //it is field 5 of FTMx_SC (status control) - also setting the pre-scale bits here
       
        FTM2_INVCTRL=0;     //反转控制
        FTM2_SWOCTRL=0;     //软件输出控制F TM Software Output Control (FTMx_SWOCTRL)
        FTM2_PWMLOAD=0;     //FTM PWM Load
                                          //BIT9: 0 Loading updated values is disabled.
                                          //1 Loading updated values is enabled.
        FTM2_CNTIN=0;        //Counter Initial Value      
        FTM2_MOD=22500;     //Modulo value,The EPWM period is determined by (MOD - CNTIN + 0x0001)                                   
                                           //PMW频率=系统频率/4/(2^FTM1_SC_PS)/FTM1_MOD
                                           //PMW频率=180M/4/(2^0)/2250=150000000/4/2250=20000hz
        //PMW分频=180M/4/(2^0)=1406250HZ,一个脉冲是0.7111us,2109个脉冲就是1.5ms
        FTM2_C0V=0;       //设置 the pulse width(duty cycle) is determined by (CnV - CNTIN).
        FTM2_C1V=0;       //设置 the pulse width(duty cycle) is determined by (CnV - CNTIN).
        FTM2_CNT=0;       //只有低16位可用
}

28

主题

999

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13356

论坛元老奖章在线王奖章优秀会员奖章活跃会员奖章

威望
2521
贡献
705
兑换币
1631
注册时间
2012-11-24
在线时间
5065 小时
2#
发表于 2013-6-12 19:06:56 | 只看该作者
:):):):):):):):):)
回复

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
3#
发表于 2013-6-13 07:11:34 | 只看该作者
什么冲突?
回复

使用道具 举报

10

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1017
威望
609
贡献
182
兑换币
160
注册时间
2012-6-16
在线时间
113 小时
4#
 楼主| 发表于 2013-6-13 15:26:37 | 只看该作者
火哥,你好,我用的是上一届师哥用k60做摄像头的底层(里面没有AD底层程序),所以我用了火哥的AD程序,现象是:前两天车子用恒定占空比的PWM信号——车可以低速在赛道上跑(没用编码器),     用了编码器对电机进行PID控制(把AD程序屏蔽掉后PID控制正常-------加上AD程序后电机乱转,基本上满占空比输出,并且轮子有一点阻力时电机抖的非常厉害),火哥您帮忙看看,我怀疑好像是编码器或电机PWM的底层与火哥的程序有点冲突。小弟先谢谢火哥
回复

使用道具 举报

10

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1017
威望
609
贡献
182
兑换币
160
注册时间
2012-6-16
在线时间
113 小时
5#
 楼主| 发表于 2013-6-13 15:26:55 | 只看该作者
野火 发表于 2013-6-13 07:11
什么冲突?

火哥,你好,我用的是上一届师哥用k60做摄像头的底层(里面没有AD底层程序),所以我用了火哥的AD程序,现象是:前两天车子用恒定占空比的PWM信号——车可以低速在赛道上跑(没用编码器),     用了编码器对电机进行PID控制(把AD程序屏蔽掉后PID控制正常-------加上AD程序后电机乱转,基本上满占空比输出,并且轮子有一点阻力时电机抖的非常厉害),火哥您帮忙看看,我怀疑好像是编码器或电机PWM的底层与火哥的程序有点冲突。小弟先谢谢火哥
回复

使用道具 举报

10

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1017
威望
609
贡献
182
兑换币
160
注册时间
2012-6-16
在线时间
113 小时
6#
 楼主| 发表于 2013-6-13 15:29:00 | 只看该作者
野火 发表于 2013-6-13 07:11
什么冲突?

火哥,您帮忙看看


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
7#
发表于 2013-6-13 17:08:02 | 只看该作者
冰冰小鱼 发表于 2013-6-13 15:26
火哥,你好,我用的是上一届师哥用k60做摄像头的底层(里面没有AD底层程序),所以我用了火哥的AD程序,现象 ...

除非你ADC和 FTM 用相同的管脚,不然不应该冲突。

你可以用排除法来查找问题,先不调用ADC函数,看看正不正常

接着 调用ADC 初始化函数,但不调用读取函数,看看正不正常

再调用ADC的读取函数,看看是否正常(可以先调用一个读取,再试试调用多个读取)



回复

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
8#
发表于 2013-6-13 17:11:05 | 只看该作者
冰冰小鱼 发表于 2013-6-13 15:26
火哥,你好,我用的是上一届师哥用k60做摄像头的底层(里面没有AD底层程序),所以我用了火哥的AD程序,现象 ...

因为很多电磁组和平衡组的人都同时用我们的ADC 和 FTM 模块代码,之前没收到有冲突的报告,我这边改成测试调用ADC和FTM函数,都正常,请考虑是否代码逻辑问题。

另外,你的FTM初始化函数 不是我们提供的代码

回复

使用道具 举报

10

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1017
威望
609
贡献
182
兑换币
160
注册时间
2012-6-16
在线时间
113 小时
9#
 楼主| 发表于 2013-6-15 20:58:25 | 只看该作者
野火 发表于 2013-6-13 17:11
因为很多电磁组和平衡组的人都同时用我们的ADC 和 FTM 模块代码,之前没收到有冲突的报告,我这边改成测试 ...

因为AD的采样时间远远大于定时周期,导致编码器采集错误,现在都好了
回复

使用道具 举报

10

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1017
威望
609
贡献
182
兑换币
160
注册时间
2012-6-16
在线时间
113 小时
10#
 楼主| 发表于 2013-6-15 20:59:31 | 只看该作者
因为AD的采样时间远远大于定时周期,导致编码器采集错误,现在都好了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-20 02:41 , Processed in 0.144098 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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