智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1947|回复: 2
打印 上一主题 下一主题

[软件类] 编码器咋么用啊,不是这个程序吗。

[复制链接]

3

主题

7

帖子

0

精华

注册会员

Rank: 2

积分
117
威望
74
贡献
27
兑换币
30
注册时间
2015-12-4
在线时间
8 小时
毕业学校
石家庄学院
跳转到指定楼层
1#
发表于 2015-12-15 22:04:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void PAOVF_Init(void)
{
    TSCR1_TEN =1;         //(7)使能定时器模块
    PACTL_PAEN =0;        //(6)累加器禁止
    PACTL_PAMOD=0;        //(5)PAMOD=0,事件计数模式;PAMOD=1,门控时间累加模式
    PACTL_PEDGE=0;        //(4)选择通道7的脉冲沿(0,下降沿)
     
    PACTL_PAOVI=0;        //使能累加器溢出中断,即PAOVF=1时申请中断
    PACTL_PAI = 1;        //使能累加器输入中断,即PAIF=0时申请中断
    PACNT=0;              //计算器初值为0
    PAFLG_PAOVF=1;        //写入清除该位,当累加器溢出时置位
    PAFLG_PAIF =1;        //写入时清除该位,当累加器有变化时置位
    PACTL_PAEN =1;        //(6)累加器使能
}

#pragma CODE_SEG __NEAR_SEG NON_BANKED        //中断函数置于非分页区内
void interrupt 18 pavf_isr(void)  //脉冲累加器
{
   DisableInterrupts;
   PAFLG_PAIF =1;//写入时清除该位,当累加器有变化时置位
   EnableInterrupts;
}

#pragma CODE_SEG DEFAULT
回复

使用道具 举报

1

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
622
威望
318
贡献
200
兑换币
211
注册时间
2014-11-4
在线时间
52 小时
毕业学校
湖北工程学院
2#
发表于 2015-12-29 00:12:04 | 只看该作者
void FTM_QUAD_init(void)
{
        /*开启端口时钟*
        SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
       
          /*选择管脚复用功能*
        PORTA_PCR8 = PORT_PCR_MUX(6); // 设置引脚A8 引脚为FTM2_PHA功能
        PORTA_PCR9 = PORT_PCR_MUX(6); // 设置引脚A9引脚为FTM2_PHA功能
        PORTA_PCR10= PORT_PCR_MUX(6); // 设置引脚A10引脚为FTM2_PHA功能
        PORTA_PCR11= PORT_PCR_MUX(6); // 设置引脚A11引脚为FTM2_PHB功能
       
        /*使能FTM1、FTM2时钟*
        SIM_SCGC6|=SIM_SCGC6_FTM1_MASK;//使能FTM1时钟
        SIM_SCGC3|=SIM_SCGC3_FTM2_MASK;//使能FTM2时钟

        FTM1_MODE |= FTM_MODE_WPDIS_MASK; //禁止写保护
        FTM2_MODE |= FTM_MODE_WPDIS_MASK;//禁止写保护
       
       
        FTM1_CNTIN=0;//FTM1计数器初始值为0
        FTM2_CNTIN=0;//FTM2计数器初始值为0
        FTM1_MOD=65535;//结束值
        FTM2_MOD=65535;//结束值 ,自己设定
       
        FTM1_MODE |= FTM_MODE_FTMEN_MASK; //FTMEN=1,关闭TPM兼容模式,开启FTM所有功能
        FTM2_MODE |= FTM_MODE_FTMEN_MASK;//FTMEN=1,关闭TPM兼容模式,开启FTM所有功能
       
        FTM1_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式
        FTM1_QDCTRL |= FTM_QDCTRL_QUADEN_MASK;    //使能正交解码模式
        FTM2_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式
        FTM2_QDCTRL |= FTM_QDCTRL_QUADEN_MASK;    //使能正交解码模式

        FTM1_CNT=0;
        FTM2_CNT=0;
       
        FTM1_SC |= FTM_SC_CLKS(3);  //选择外部时钟
        //   FTM1_CONF |=FTM_CONF_BDMMODE(3); //可根据需要选择
        FTM2_SC |= FTM_SC_CLKS(3);
        //   FTM2_CONF |=FTM_CONF_BDMMODE(3);

        //输入滤波可选
        //写入该寄存器的值将立刻起作用
        //而且通道0、1、2、3必须在输入模式下,如设置不当可能造成错过正确的信号。
        /*
        FTM1_QDCTRL_PHAFLTREN=1;
        FTM1_QDCTRL_PHBFLTREN=1;
        FTM2_QDCTRL_PHAFLTREN=1;
        FTM2_QDCTRL_PHBFLTREN=1;
       
}
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
240
威望
132
贡献
76
兑换币
87
注册时间
2018-5-18
在线时间
16 小时
3#
发表于 2018-6-13 11:15:33 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 14:38 , Processed in 0.048107 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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