智能车制作
标题:
单向编码器如何判断正反转
[打印本页]
作者:
yanghongwei
时间:
2015-7-9 11:16
标题:
单向编码器如何判断正反转
//////////////////////////////// 以下为脉冲计数 //////////////////////////////////////////
/*!
* @brief 脉冲计数初始化函数
* @param TPMn_e 模块号(TPM0、 TPM1、 TPM2)
* @param TPM_CLKIN_e 脉冲输入管脚
* @param TPM_PS_e 分频因子
* @since v5.2
* @note 同一个TPM,只能干一个活,用于脉冲计数后就不要再用于其他功能,例如PWM、输入捕捉。
* Sample usage: tpm_pulse_init(TPM0,TPM_CLKIN1,TPM_PS_2); //TPM0初始化为脉冲计数,脉冲输入管脚为 TPM_CLKIN1_PIN ,进行二分频计数。
*/
void tpm_pulse_init(TPMn_e tpmn,TPM_CLKIN_e clkin,TPM_PS_e ps)
{
ASSERT(ps < TPM_PS_MAX);
//配置 复用
switch(tpmn)
{
case TPM0:
SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK; //使能TPM0时钟
break;
case TPM1:
SIM_SCGC6 |= SIM_SCGC6_TPM1_MASK; //使能TPM1时钟
break;
case TPM2:
SIM_SCGC6 |= SIM_SCGC6_TPM2_MASK; //使能TPM2时钟
break;
default:
ASSERT(0);
}
if(clkin == TPM_CLKIN0)
{
SIM_SOPT4 &= ~( SIM_SOPT4_TPM0CLKSEL_MASK << tpmn );
port_init(TPM_CLKIN0_PIN,ALT4);
}
else if(clkin == TPM_CLKIN1)
{
SIM_SOPT4 |= ( SIM_SOPT4_TPM0CLKSEL_MASK << tpmn );
port_init(TPM_CLKIN1_PIN,ALT4);
}
else
{
ASSERT(0); //断言,clkin 只能 0 和 1
}
/******************** 配置时钟和分频 ********************/
SIM_SOPT2 &= ~ SIM_SOPT2_TPMSRC_MASK;
SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1); // 00 Clock disabled 01 MCGFLLCLK clock, or MCGPLLCLK/2 10 OSCERCLK clock 11 MCGIRCLK clock
TPM_SC_REG(TPMN[tpmn]) = ( 0
//| TPM_SC_CPWMS_MASK //0:上升沿计数模式 ,1: 跳变沿计数模式选择 (注释了表示 0)
| TPM_SC_PS(ps) //分频因子,分频系数 = 2^PS
| TPM_SC_CMOD(2)
);
TPM_MOD_REG(TPMN[tpmn]) = 0xFFFF;
TPM_CNT_REG(TPMN[tpmn]) = 0; //计数器。只有低16位可用(写任何值到此寄存器,都会清0)
}
////////////
能否在这个里边根据陀螺仪来判断????如果能该怎么弄??求指教
作者:
xw2588
时间:
2015-7-17 08:23
可以用74HC74.接一个I/O口,或者通过电机PWM输出,根据电机正转反转判断。
作者:
Toina
时间:
2015-8-18 11:34
楼主你的编码器是什么参数?
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2