Hello Nxp Team,
I used S32K144 controller in our project. I want to use quadrature decoder pin to PTD10 and PTD11 from two channel encoder. if I set:
PORTD->PCR[10] = PORT_PCR_MUX(3); // Set PTD10 for FTM2 - Phase B input
PORTD->PCR[11] = PORT_PCR_MUX(3); // Set PTD11 for FTM2 - Phase A input
and enable to QUADEN = 1, the interrupt handler FTM2_Ch0_Ch1_IRQHandler() doesn't work. Does quadrature decoder mode supports interrupt or not? If supported, what do I set wrong? Thank you.
Best regard,
Howard
Thanks for reply Diana,
I set FTM2 as quadrature decoder mode as below:
FSL_NVIC->ISER[111 / 32] |= (1 << (111 % 32));
/* Encoder simulated with totally 36 rising/falling edges */
FTM2->MOD = FTM_MOD_MOD(36);
FTM2->CNTIN = FTM_CNTIN_INIT(0);
FTM2->QDCTRL= FTM_QDCTRL_QUADEN_MASK;
FTM2->CNT = 0;
/* Select clock */
FTM2->SC = FTM_SC_CLKS(1) | FTM_SC_TOIE_MASK;
void FTM2_Ch0_Ch1_IRQHandler()//this interrupt is shared by ch0&1
{
PTC->PTOR |= 1<<9; // Toggle
FTM2->SC &= ~FTM_SC_TOF_MASK;
Hall_AB_Angle = FTM2->CNT;
}
I cannot saw a toggle wave on my oscilloscope from pin C9. I guess interrupt didn't work.
Can you let me know what is wrong in my settings?
Thank you.
Hao
Hello Hao,
According to our previous discussion in the service ticket, I would like to add a comment here.
"The quadrature decoder mode uses the input signals phase A and B to control the FTM counter increment and decrement."
Your interrupt (FTM2_Ch0_Ch1_IRQHandler()) does not work because you did not configure FTM2 ch0/ch1.
Then what should cause interrupt according to you, interrupt on position count?
Thank you.
Best Regards,
Diana