thank you very much for both your reply.
I've tried dual edge capture but still not accurate measurements.
void FTM0_Init(void)
{
/* Start FTM0 configuration*/
/* Set PORT pin mux to CH0 */
SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;
PORTC_PCR1 = (uint32_t) (PORT_PCR_MUX(4) |PORT_PCR_SRE_MASK);
/* Enable FTM0 Module */
SIM_SCGC6 |= SIM_SCGC6_FTM0_MASK;
/* disable write protection AND Free running counter */
FTM_PDD_WriteProtectionDisable(FTM0_BASE_PTR);
FTM0_CNT = 0x0;
FTM0_MOD = (uint16_t)(0xFFFF);
FTM_PDD_WriteCombineReg(FTM0_BASE_PTR,FTM_COMBINE_DECAPEN0_MASK |FTM_COMBINE_DECAP0_MASK);
FTM_PDD_WriteChannelControlReg(FTM0_BASE_PTR, FTM_PDD_CHANNEL_0,FTM_CnSC_ELSA_MASK); //No IRQ on chn(n)
FTM_PDD_WriteChannelControlReg(FTM0_BASE_PTR, FTM_PDD_CHANNEL_1,FTM_CnSC_CHIE_MASK | FTM_CnSC_ELSA_MASK);// Enable IRQ on ch(n +1)
/* Add IRQ into NVIC*/
NVICIP42 = NVIC_IP_PRI42(0x70);
NVICISER1 |= NVIC_ISER_SETENA(0x400);
NVICICPR1 |= NVIC_ICPR_CLRPEND(42);
}
/* FTM0 IRQ*/
void FTM0_IRQHandler(void) {
if(FTM0_C1SC & FTM_CnSC_CHF_MASK)
{
lDBIsoClocK.Ftm0_CNT_Val[0] = FTM0_C0V;
lDBIsoClocK.Ftm0_CNT_Val[1] = FTM0_C1V;
FTM_PDD_ClearChannelInterruptFlag(FTM0_BASE_PTR, FTM_PDD_CHANNEL_1);
lDBIsoClocK.Done = true;
}
}
int main(void)
{[...]
FTM0_Init();
/* Start FTM0 */
FTM0_SC |= (uint32_t)(FTM_SC_CLKS(1));
while(lDBIsoClocK.Done != true)
{
}
/* Clock computation here*/
}
}
anyway, yet no accurate measurement for fast clock.
As previously said, FTM bus is clocked @48MHz.
L.