I'm using M52259DEMOKIT.
I'm using GPT for output compare match with the following code:
VMCF5225_STRUCT_PTR reg_ptr = (VMCF5225_STRUCT_PTR)BSP_IPSBAR;[...]void gpt_init (){ reg_ptr -> GPT.GPTIOS |= GPT_GPTIOS_IOS0; //Attivazione Output Compare 0 reg_ptr -> GPT.GPTC0 = 0x00; //GPTC0 resettato a 0 reg_ptr -> GPT.GPTDDR |= GPT_GPTDDR_DDRT0; //Pin OC0 come uscita reg_ptr -> GPT.GPTCTL1 |= GPT_GPTCTL1_OUTPUT0_NOTHING; //Nessun effetto sul piedino OC0 reg_ptr -> GPT.GPTSCR2 |= GPT_GPTSCR2_PR_16; //Prescaler 1/16 _int_install_kernel_isr (MCF5225_INT_TIMA_C0F, OC0_service); reg_ptr -> GPT.GPTFLG1 |= GPT_GPTFLG1_CF0; //clear flag reg_ptr -> GPT.GPTIE |= GPT_GPTIE_CI0; //Interrupt su OC0 _mcf5225_int_init (MCF5225_INT_TIMA_C0F, gpt_level, gpt_priority, 1);}[...]__declspec(interrupt:0) void OC0_service (){ count++; reg_ptr -> GPT.GPTFLG1 |= GPT_GPTFLG1_CF0; //clear flag}
I set MQX_ROM_VECTORS to 0 in the user_config.h and rebuilt bsp and psp. In the code I'm using the function _int_install_kernel_isr so that my interrupt routine is direct without MQX intervention. (It should allow faster interrupts)
You may try to modify the code to your purposes. Hope it helps.
Moreover, something about the DTIM is here https://community.freescale.com/message/60070#60070
Regards,
Marco