hi,
i am using Mc9s12xEQ512, micro hsc12 compiler.
i am facing an issue with IRQ interrupt wake up, i am using three other wake ups, XIRQ and 2 kwp wakeup, i am not having any issue, but when i am waking up the system with IRQ interrupt, the system is Resetting instead of wake up,
i am writting the details about the initalization and code flow for sleep and wake up
//++++++++++++++++++++++++++++++++++++++++++++++++++++++
Vector table location showing the Address for IRQ
UnimplementedISR, /* 0xFFE0 Enhanced Capture Timer channel 7 */
UnimplementedISR, /* 0xFFE2 Enhanced Capture Timer channel 6 */
UnimplementedISR, /* 0xFFE4 Enhanced Capture Timer channel 5 */
UnimplementedISR, /* 0xFFE6 Enhanced Capture Timer channel 4 */
UnimplementedISR, /* 0xFFE8 Enhanced Capture Timer channel 3 */
ECTCH2_ISR_Read_PlsInput, /* 0xFFEA Enhanced Capture Timer channel 2 */
ECTCH1_ISR_Read_PlsInput, /* 0xFFEC Enhanced Capture Timer channel 1 */
ECTCH0_ISR_Read_PlsInput, /* 0xFFEE Enhanced Capture Timer channel 0 */
UnimplementedISR, /* 0xFFF0 Real Time Interrupt */
IRQ_ISR, /* 0xFFF2 IRQ */
XIRQ_ISR,
UnimplementedISR, /* 0xFFF6 SWI */
UnimplementedISR, /* 0xFFF8 Unimplemented instruction trap */
UnimplementedISR, /* 0xFFFA COP failure reset */
UnimplementedISR, /* 0xFFFC Clock monitor fail reset */
/_______________________________________________________________________
Code involving the sleep and wake up
void Init_Wakeup_modules(void){
IRQCR.byte = 0xC0; //IRQ pin is connected to interrupt logic, interrupt is
//triggered on fallinge edge
PPSP.byte = 0x01; //Select active high interrupt for Parking lamp and active low interrupt for Door open
PIEP.byte = 0x03; //Enable KWP0 and KWP1 wakeup interrupts
}
/* This function checks for the sleep and wakeup control inputs, if not available controller is forced to STOP mode */
void DisableWakeupIntr(void){
IRQCR.byte = 0; //Disable external interrupts
PIEP.byte = 0x00; //Disable KWP0 and KWP1 wakeup interrupts
Init_WakeUp();
Wkup_Int_Disabled = 1;
}
void EnableSleep(void){
Init_Wakeup_modules();
Wkup_Int_Disabled = 0;
//--------------------------Port pins disables for power down operation-----------------------
SPI0.spicr1.bit.spe = 0;
SPI1.spicr1.bit.spe = 0;
IIC0.ibcr.bit.iben = 0;
Dig_OP_Init();
Test2_SWsupply(0);
asm ANDCC #0x6F; //clear S bit - enable the stop mode. If the S bit is not
//cleared then STOP instruction has no effect and is
//executed as a dummy instruction NOP.
asm STOP; //Invoke the Stop mode
Wakeup_Init();
//_Startup(); //Go to startup
//Wakeup_Init(); // do only init variable which is required after sleep
// commented to test the issue of no wakeup after sleep
}
/==========================================================================
//==============================================================================
//IRQ_ISR
//==============================================================================
#ifdef __MWERKS__
#pragma TRAP_PROC
#else
static @interrupt @near
#endif
interrupt void IRQ_ISR(void)
{
//-------------------------interrupt
}
i have also attached the power module of my micro and circuitry involving the IRQ for your REF.
in my previous post , the IRQ _SChematics is not clearly visible, please find the attached IRQ schematics,