Hi. I am back again.
The latest hot fix to fix your other hot fix has a different problem now.
Apparently you broke TimerInt component...at least when I use it with the MC9S12XA256 API Counter or PIT, the interrupts are never enabled and it doesn't work.
After I applied and tested your latest hot fix some of my timer related features stopped working. I have traced it to this for API Counter:
/*
** ===================================================================
** Method : HWEnDi (component TimerInt)
**
** Description :
** Enables or disables the peripheral(s) associated with the
** component. The method is called automatically as a part of the
** Enable and Disable methods and several internal methods.
** This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
static void HWEnDi(void)
{
if (EnUser) { /* Enable device? */
VREGAPICL |= 0x04U; /* Enable timer*/ <--- "This does not set APIE Flag and thus interrupts are never enabled"
} else { /* Disable device? */
clrSetReg8Bits(VREGAPICL, 0x06U, 0x01U); /* Disable API timer and interrupt */
}
}
If I edit the processor Expert code and allow the APIE bit to be set, then it works like normal again.
VREGAPICL |= 0x06U; /* Enable timer*/ <--- "This also sets APIE Flag and interrupts are enabled"
I checked this with PIT0 Timer and had similar problems.
/*
** ===================================================================
** Method : HWEnDi (component TimerInt)
**
** Description :
** Enables or disables the peripheral(s) associated with the
** component. The method is called automatically as a part of the
** Enable and Disable methods and several internal methods.
** This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
static void HWEnDi(void)
{
if (EnUser) { /* Enable device? */
PITCE |= 0x01U; /* Enable timer */ <-- "PITINTE is never re-enabled, thus no interrupts occur"
} else { /* Disable device? */
PITINTE &= 0xFEU; /* Disable channel interrupt */ <-- "Disabled here, but never re-enabled anywhere else"
PITCE &= 0xFEU; /* Disable timer channel*/
}
}
Apparently something was changed with TimerInt, even though I was only having issues with FreeCntr.
This pretty much makes my code useless now. Can it be fixed soon? Thank you.