查看: 3316|回复: 8

MC9S08PT16 FTM问题(已解决)

[复制链接]

该用户从未签到

2

主题

11

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
发表于 2014-1-10 12:58:07 | 显示全部楼层 |阅读模式
 void FTM2_Init(void) {
       
        FTM2_MODE |= FTM2_MODE_WPDIS_MASK;
        SYS_SOPT1 |= SYS_SOPT1_FTM2PS;
        SCG_C1_FTM2 = 1;
        FTM2_SC |= 0x08;//(FTM2_SC_CLKS0_MASK | FTM2_SC_PS0_MASK | FTM2_SC_PS1_MASK | FTM2_SC_PS2_MASK);
        FTM2_C2SC |= 0x3C;
        //FTM2_OUTMASK |= 0xFB;
        FTM2_CNTIN = 0;
        FTM2_MOD = 299;
        FTM2_C2V = 0;
        FTM2_MODE |= 0x01;
}
 
这是我的FTM初始化函数,使用FTM的PWM功能,可是从实验来看使用的pin并没有输出PWM,是不是我没有开启FTM开始工作还是?
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    5968
    最后登录
    2020-9-28
    发表于 2014-1-10 13:44:55 | 显示全部楼层

    RE:MC9S08PT16 FTM问题

    如果你改变你的FTM2_C2V,还没PWM输出吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    5968
    最后登录
    2020-9-28
    发表于 2014-1-10 13:50:43 | 显示全部楼层

    回复:MC9S08PT16 FTM问题

    请问你是想要实现参考手册MC9S08PT16RM中FTM的边沿对齐Edge-aligned PWM中先低后高的Low-true pulses (set Output on match)PWM波吗?
      S08 PWM.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    0
    最后登录
    1970-1-1
     楼主| 发表于 2014-1-10 14:04:05 | 显示全部楼层

    回复:MC9S08PT16 FTM问题

    恩,是的,只是感觉FTM没什么反应。是不是少了啥配置?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    5968
    最后登录
    2020-9-28
    发表于 2014-1-10 15:08:31 | 显示全部楼层

    回复:MC9S08PT16 FTM问题

    回复第 4 楼 于2014-01-10 14:04:05发表:
    恩,是的,只是感觉FTM没什么反应。是不是少了啥配置? 

    这个是CodeWarrior10.5软件的PE生成初始化代码,你参考一下吧
    /*
    ** ===================================================================
    **     Method      :  FTM2_Init (component Init_FTM)
    **     Description :
    **         This method initializes registers of the FTM module
    **         according to the Peripheral Initialization settings.
    **         Call this method in user code to initialize the module. By
    **         default, the method is called by PE automatically; see "Call
    **         Init method" property of the component for more details.
    **     Parameters  : None
    **     Returns     : Nothing
    ** ===================================================================
    */
    void FTM2_Init(void)
    {
      (void)getReg8(FTM2_SC);              /* Dummy read of the FTM2_SC register to clear the interrupt flag */
      /* FTM2_SC: TOF=0,TOIE=0,CPWMS=0,CLKS=0,PS=0 */
      setReg8(FTM2_SC, 0x00U);             /* Stop the counter */
      (void)getReg8(FTM2_C0SC);            /* Dummy read of the FTM2_C0SC register to clear the interrupt flag */
      /* FTM2_MODE: WPDIS=1 */
      setReg8Bits(FTM2_MODE, 0x04U);       /* Disable write protection */
      /* FTM2_MODE: FTMEN=0 */
      clrReg8Bits(FTM2_MODE, 0x01U);       
      /* FTM2_C0SC: CHF=0,CHIE=0,MSB=1,MSA=0,ELSB=0,ELSA=1,??=0,??=0 */
      setReg8(FTM2_C0SC, 0x24U);           
      /* FTM2_C1SC: CHF=0,CHIE=0,MSB=0,MSA=0,ELSB=0,ELSA=0,??=0,??=0 */
      setReg8(FTM2_C1SC, 0x00U);           
      /* FTM2_C2SC: CHF=0,CHIE=0,MSB=0,MSA=0,ELSB=0,ELSA=0,??=0,??=0 */
      setReg8(FTM2_C2SC, 0x00U);           
      /* FTM2_C3SC: CHF=0,CHIE=0,MSB=0,MSA=0,ELSB=0,ELSA=0,??=0,??=0 */
      setReg8(FTM2_C3SC, 0x00U);           
      /* FTM2_C4SC: CHF=0,CHIE=0,MSB=0,MSA=0,ELSB=0,ELSA=0,??=0,??=0 */
      setReg8(FTM2_C4SC, 0x00U);           
      /* FTM2_C5SC: CHF=0,CHIE=0,MSB=0,MSA=0,ELSB=0,ELSA=0,??=0,??=0 */
      setReg8(FTM2_C5SC, 0x00U);           
      /* FTM2_SC: CPWMS=0 */
      clrReg8Bits(FTM2_SC, 0x20U);         
      /* FTM2_C0V: VAL=0x95 */
      setReg16(FTM2_C0V, 0x95U);           
      /* FTM2_MOD: MOD=0x012B */
      setReg16(FTM2_MOD, 0x012BU);         
      /* FTM2_CNT: COUNT=0 */
      setReg16(FTM2_CNT, 0x00U);           
      /* FTM2_SC: TOF=0,TOIE=0,CLKS=1,PS=0 */
      clrSetReg8Bits(FTM2_SC, 0xD7U, 0x08U);
    }
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    5968
    最后登录
    2020-9-28
    发表于 2014-1-10 15:10:21 | 显示全部楼层

    回复:MC9S08PT16 FTM问题

    这种模块初始化函数,如果不会的话,可以直接在CodeWarrior软件的PE工具配置后生成。
    PWM MC9S08PT16 PE.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    0
    最后登录
    1970-1-1
     楼主| 发表于 2014-1-11 10:32:56 | 显示全部楼层

    回复:MC9S08PT16 FTM问题

    我按照你上面的去配置PWM还是没有用,还是没有PWM信号输出来,然而我还试了输入捕捉,好像也是不行,给它配置捕捉上升沿或下降沿,最终通过实验看,并没有产出中断,配置如下:void FTM2_Init(void)
    {
      (void)getReg8(FTM2_SC);              /* Dummy read of the FTM2_SC register to clear the interrupt flag */
      /* FTM2_SC: TOF=0,TOIE=0,CPWMS=0,CLKS=0,PS=0 */
      setReg8(FTM2_SC, 0x00U);             /* Stop the counter */
      (void)getReg8(FTM2_C0SC);            /* Dummy read of the FTM2_C0SC register to clear the interrupt flag */
      /* FTM2_MODE: WPDIS=1 */
      FTM2_MODE |= 0x04U;       /* Disable write protection */
      /* FTM2_MODE: FTMEN=0 */
      FTM2_MODE &= ~0x01;                  
      /* FTM2_C1SC: CHF=0,CHIE=0,MSB=0,MSA=0,ELSB=0,ELSA=0,??=0,??=0 */
      setReg8(FTM2_C1SC, 0x00U);            
      /* FTM2_C2SC: CHF=0,CHIE=0,MSB=0,MSA=0,ELSB=0,ELSA=0,??=0,??=0 */
      setReg8(FTM2_C2SC, 0x00U);            
      /* FTM2_C3SC: CHF=0,CHIE=0,MSB=0,MSA=0,ELSB=0,ELSA=0,??=0,??=0 */
      setReg8(FTM2_C3SC, 0x00U);            
      /* FTM2_C4SC: CHF=0,CHIE=0,MSB=0,MSA=0,ELSB=0,ELSA=0,??=0,??=0 */
      setReg8(FTM2_C4SC, 0x00U);
      /* FTM2_C5SC: CHF=0,CHIE=0,MSB=0,MSA=0,ELSB=0,ELSA=0,??=0,??=0 */
      setReg8(FTM2_C5SC, 0x00U);   
      /* FTM2_CNT: COUNT=0 */
      FTM2_CNTIN = 0x0000;
      FTM2_CNT = 0x00;
      FTM2_SC |= FTM2_SC_CLKS0_MASK;
      FTM2_C0SC |= (FTM2_C0SC_CHIE_MASK | FTM2_C0SC_ELSA_MASK | FTM2_C0SC_ELSB_MASK);
    }
    所以我觉这两个都是使用了同一个模块,而且都没有工作,所以我想知道是不是还漏了什么去启动FTM跑起来的设置?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    0
    最后登录
    1970-1-1
     楼主| 发表于 2014-1-11 22:19:42 | 显示全部楼层

    回复:MC9S08PT16 FTM问题

    自己顶下………………
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12

    主题

    52

    帖子

    0

    新手上路

    Rank: 1

    积分
    46
    最后登录
    1970-1-1
    发表于 2014-1-14 23:56:11 | 显示全部楼层

    回复:MC9S08PT16 FTM问题

    你的第一句就有些问题,你在打开FTM2的时钟门控之前就对FTM2的寄存器进行了操作,这时候系统应该会死在Hartfault错误中了
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-25 17:05 , Processed in 0.156876 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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