TPM with RTC Seconds as trigger

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

TPM with RTC Seconds as trigger

816 Views
aescov
Contributor I

Hi

I am trying to the use the TPM as capture timer with RTC seconds as trigger on the K65

I have the TPM counter running and the RTC generates 1 second interrupts.

TPM input clock is OSCER.

TPM trigger is set to RTC Seconds (13) but i do not get any TPM channel interrupt.

However I do get TPM overflow interrupts which indicates that the TPM counter is running. Also I can see the count value changing.

 

My setup code look like this

 

       CLOCK_SetTpmClock(2);

        // Start Capture timer

        tpm_config_t config;

        TPM_GetDefaultConfig(&config);

        config.prescale = kTPM_Prescale_Divide_1;

        config.useGlobalTimeBase = false;          /* Use internal TPM counter as timebase */

        config.enableDoze = false;                 /* TPM counter continues in doze mode */

        config.enableDebugMode = false;            /* TPM counter pauses when in debug mode */

        config.enableReloadOnTrigger = false;      /* TPM counter will not be reloaded on input trigger */

        config.enableStopOnOverflow = false;       /* TPM counter continues running after overflow */

        config.enableStartOnTrigger = false;        /* TPM counter starts on first trigger */

        config.enablePauseOnTrigger = false;       /* TPM does not pause on trigger */

        config.triggerSelect = kTPM_Trigger_Select_13;        /* Choose trigger select 0 as input trigger for controlling counter operation */

        config.triggerSource = kTPM_TriggerSource_External;   /* Choose external trigger source to control counter operation */

 

 

        TPM_Init(TPM1, &config);

        // Enable overflow interrupt

        TPM_EnableInterrupts(TPM1, kTPM_Chnl0InterruptEnable | kTPM_TimeOverflowInterruptEnable);

        NVIC_SetPriority(TPM1_IRQn, TPM1_INTERRUPT_PRIORITY);

        NVIC_EnableIRQ(TPM1_IRQn);

 

 

        TPM1->CNT = 0x0;

        TPM1->MOD = 0xFFFF;

        // Clear overflow flag

        TPM1->SC |= TPM_SC_TOF_MASK;

 

 

        TPM_SetupInputCapture(TPM1,kTPM_Chnl_0, kTPM_RisingEdge);

        TPM_StartTimer(TPM1, kTPM_SystemClock);

 

 

Have anyone of you tried this configuration with success.

 

Any suggestions appreciated.

 

Best regards

Anders

Labels (1)
0 Kudos
1 Reply

396 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

It seems that you have to add the line:

NVIC_ClearPendingIRQ(TPM1_IRQn);

You have to replace the interrupt vector table with your own ISR.

If you still have issue, pls upload your project so that your code can be debugged.

Hope it can help you.

BR

Xiangjun Rong

0 Kudos