//pie block
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
PieCtrlRegs.PIEIER9.bit.INTx7 = 1;
PieCtrlRegs.PIEIER9.bit.INTx8 = 1;
// Enable CPU int
IER |= M_INT9;
}
void main(void)
{
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
InitFlash();
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
InitIsr();
InitGpio();
InitEcan();
EINT;
ERTM;
Gpio_example1();
}
interrupt void CAN_ISR(void)
{
struct ECAN_REGS ECanbShadow;
unsigned char bRcvBuf[8];
ECanbShadow.CANRMP.all = ECanbRegs.CANRMP.all;
ECanbShadow.CANTA.all = ECanbRegs.CANTA.all;
if(ECanbShadow.CANRMP.bit.RMP0 == 1)
{
ECanbShadow.CANRMP.bit.RMP0 = 1;
ECanbRegs.CANRMP.all = ECanbShadow.CANRMP.all;
bRcvBuf[0] = ECanbMboxes.MBOX0.MDL.byte.BYTE0;
bRcvBuf[1] = ECanbMboxes.MBOX0.MDL.byte.BYTE1;
bRcvBuf[2] = ECanbMboxes.MBOX0.MDL.byte.BYTE2;
bRcvBuf[3] = ECanbMboxes.MBOX0.MDL.byte.BYTE3;
bRcvBuf[4] = ECanbMboxes.MBOX0.MDH.byte.BYTE4;
bRcvBuf[5] = ECanbMboxes.MBOX0.MDH.byte.BYTE5;
bRcvBuf[6] = ECanbMboxes.MBOX0.MDH.byte.BYTE6;
bRcvBuf[7] = ECanbMboxes.MBOX0.MDH.byte.BYTE7;
if(bRcvBuf[1] == 1)
{
GpioDataRegs.GPBDAT.all = 0x08000000;
}
else
{
GpioDataRegs.GPBDAT.all = 0x00000000;
}
}
PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
}
|