智能车制作
标题:
ftm捕获测量周期
[打印本页]
作者:
永久
时间:
2012-8-30 10:12
标题:
ftm捕获测量周期
ftm测量周期 我捕获到第一个边沿的时候进中断 读取cnv的值 第二次进中断再读取cnv的值 我想用两个值做减法 然后求出周期 可是两个值我发现是一样的 下面是我的初始化和中断函数
void FTM_Input_init(void)
{
SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK; //使能FTM1时钟
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
PORTA_PCR9 = PORT_PCR_MUX(0x3); //通PTA9 通道01
/******************* 设置为输入捕捉功能 *******************/
//设置通道1,工作在上升沿捕获模式
FTM1_C1SC &=~ FTM_CnSC_ELSA_MASK;//ELSA=0,捕获下降沿
FTM1_C1SC |=FTM_CnSC_ELSB_MASK; //ELSB=1
FTM1_C1SC &= ~ FTM_CnSC_MSB_MASK;//MSB=0
FTM1_C1SC &= ~ FTM_CnSC_MSA_MASK;//MSA=0
FTM1_C1SC |= FTM_CnSC_CHIE_MASK; //通道中断使能
//FTM1_SC|=FTM_SC_PS(2);
FTM1_SC |= FTM_SC_CLKS(0x1); //System clock
FTM1_MODE |= FTM_MODE_WPDIS_MASK; //去写保护
FTM1_SC&=~FTM_SC_CPWMS_MASK; //CPWMS=0
FTM1_COMBINE = 0;
FTM1_MODE &= ~FTM_MODE_FTMEN_MASK; //FTM禁止
//FTM1_MODE |= FTM_MODE_FTMEN_MASK; //使能FTM1
FTM1_COMBINE&=~FTM_COMBINE_DECAPEN1_MASK;//DECAPEN0=0
// FTM1_COMBINE|=FTM_COMBINE_DECAP0_MASK;//DECAP0=1
FTM1_CNTIN = 0;
// FTM1_MOD=0;
FTM1_STATUS = 0x00; //清中断标志位
//开启输入捕捉中断
enable_irq(63); //开FTM1中断
}
void FTM1_IRQHandler()
{
// uint8 s = FTM1_STATUS; //读取捕捉和比较状态 All CHnF bits can be checked using only one read of STATUS.
// uint8 CHn;
FTM1_STATUS = 0x00; //清中断标志位
Count_irq++;
if(Count_irq==1)
{
FTM1_C1SC &= ~FTM_CnSC_CHIE_MASK; //禁止通道中断
a=FTM1_C1V;
FTM1_C1SC |= FTM_CnSC_CHIE_MASK; //开启通道中断
}
if(Count_irq==2)
{
FTM1_C1SC &= ~FTM_CnSC_CHIE_MASK; //禁止通道中断
b=FTM1_C1V;
Count_irq=0;
FTM1_C1SC |= FTM_CnSC_CHIE_MASK; //开启通道中断
}
}
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2