#define Fcpu 23040000 //11.0592 xtal, M=100, N=6, CPU_D=4 => 2*xtal*M/N/CPU_D/4 = MIPS
void CAN_IRQHandler(void)
{
unsigned char myvar[60];
CAN_ReceiveMsg(LPC_CAN1,&RXMsg);
SendString0("CAN Int\r\n");
sprintf(myvar,"RID is %x and ICR is %x and RDA is %x and RFS is %x\r\n",LPC_CAN1->RID,LPC_CAN1->ICR,LPC_CAN1->RDA,LPC_CAN1->RFS);
SendString0(myvar);
LPC_CAN1->CMR = CAN_CMR_AT | CAN_CMR_RRB | CAN_CMR_CDO;
}
void SendCANMsg()
{
TXMsg.id = 46;
TXMsg.dataA[0] = 5;
TXMsg.dataA[1] = 6;
TXMsg.dataA[2] = 7;
TXMsg.dataA[3] = 8;
TXMsg.len = 4;
TXMsg.format = STD_ID_FORMAT;
TXMsg.type = DATA_FRAME;
CAN_SendMsg(LPC_CAN1,&TXMsg);
}
int main (void)
{
unsigned int i;
unsigned char myvar[30];
baudrate=986040;
CAN_Init(LPC_CAN1, baudrate); //((int) 983040)
//Enable Interrupt
CAN_IRQCmd(LPC_CAN1, CANINT_RIE, ENABLE);
CAN_IRQCmd(LPC_CAN1, CANINT_DOIE, ENABLE);
CAN_ModeConfig(LPC_CAN1,CAN_OPERATING_MODE , ENABLE); //CAN_OPERATING_MODE CAN_MOD_STM
CAN_SetAFMode(LPC_CANAF,CAN_AccBP);
NVIC_EnableIRQ(CAN_IRQn);
while(1)
{
if(doProcess) //every 1 second is activated by timer 0
{
doProcess=0;
sprintf(myvar,"GSR is %x and SR is %x\r\n",LPC_CAN1->GSR,LPC_CAN1->SR);
SendString0(myvar);
sprintf(myvar,"RID is %d and DATA is %x\r\n",LPC_CAN1->RID,LPC_CAN1->RDA);
LPC_CAN1->CMR = CAN_CMR_AT | CAN_CMR_RRB | CAN_CMR_CDO;
SendString0(myvar);/**/
SendCANMsg();
}
}
}
|