<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic MSCAN Question in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MSCAN-Question/m-p/872263#M16267</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sir,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IC：mc9s12xet256&amp;nbsp;&lt;/P&gt;&lt;P&gt;Output：CAN4 = PIN117(TXD)，PIN118(RXD)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I try to use the MSCAN Rx interrupter, IC always not pass at &lt;SPAN style="color: #ff0000;"&gt;"&lt;SPAN style="background-color: #f6f6f6;"&gt;EnableInterrupts;"&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please help me , what happen ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks so much.&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;hidef.h&amp;gt; /* common defines and macros */&lt;BR /&gt;#include "derivative.h" /* derivative-specific definitions */&lt;BR /&gt;#define ST_ID_100 0x100&lt;/P&gt;&lt;P&gt;#define ACC_CODE_ID100 0x2000&lt;BR /&gt;#define ACC_CODE_ID100_HIGH ((ACC_CODE_ID100 &amp;amp; 0xFF00)&amp;gt;&amp;gt;8)&lt;BR /&gt;#define ACC_CODE_ID100_LOW (ACC_CODE_ID100 &amp;amp; 0x00FF)&lt;/P&gt;&lt;P&gt;/* Mask Code Definitions */&lt;BR /&gt;#define MASK_CODE_ST_ID 0x0007&lt;BR /&gt;#define MASK_CODE_ST_ID_HIGH ((MASK_CODE_ST_ID &amp;amp; 0xFF00)&amp;gt;&amp;gt;8)&lt;BR /&gt;#define MASK_CODE_ST_ID_LOW (MASK_CODE_ST_ID &amp;amp; 0xFF)&lt;BR /&gt;/* Task FlagDefinitions */&lt;BR /&gt;unsigned char Task_CAN =0x00;&lt;BR /&gt;unsigned char errorflag;&lt;BR /&gt;unsigned char txbuff[8] ="12345";&lt;BR /&gt;unsigned char rxbuff[8] ="";&lt;BR /&gt;unsigned int rxID;&lt;BR /&gt;/* Function Definitions */&lt;BR /&gt;void Task(void);&lt;/P&gt;&lt;P&gt;/* MSCAN0 Init */&lt;BR /&gt;void can4Init()&lt;BR /&gt;{&lt;BR /&gt; //MSCAN Initial mode &lt;BR /&gt; CAN4CTL0 = 0x01;&lt;BR /&gt; &lt;BR /&gt; //Check Entry the MSCAN Initial mode &lt;BR /&gt; while(!(CAN4CTL1 &amp;amp; 0x01));&lt;BR /&gt; &lt;BR /&gt; //MSCAN Enable &amp;amp; Loop Enable &lt;BR /&gt; CAN4CTL1 = 0x80;&lt;BR /&gt; &lt;BR /&gt; //fOSC=4MHz,CAN speed=250kbps&lt;BR /&gt; CAN4BTR0 = 0xC0;&lt;BR /&gt; CAN4BTR1 = 0x67;&lt;BR /&gt; &lt;BR /&gt; /* Close Filters */&lt;BR /&gt; CAN4IDAC = 0x30;&lt;BR /&gt; CAN4IDAR0=CAN4IDAR1=CAN4IDAR2=CAN4IDAR3=0xFF;&lt;BR /&gt; CAN4IDAR4=CAN4IDAR5=CAN4IDAR6=CAN4IDAR7=0xFF;&lt;BR /&gt; CAN4IDMR0=CAN4IDMR1=CAN4IDMR2=CAN4IDMR3=0xFF;&lt;BR /&gt; CAN4IDMR4=CAN4IDMR5=CAN4IDMR6=CAN4IDMR7=0xFF;&lt;BR /&gt; //CAN0IDAR0 = ACC_CODE_ID100_HIGH; //|\ 16-bit Filter 0&lt;BR /&gt; //CAN0IDMR0 = MASK_CODE_ST_ID_HIGH; //| \__ Accepts Standard Data Frame Msg&lt;BR /&gt; //CAN0IDAR1 = ACC_CODE_ID100_LOW; //| / with ID 0x100&lt;BR /&gt; //CAN0IDMR1 = MASK_CODE_ST_ID_LOW; //|/&lt;BR /&gt; /* Acceptance Filters */&lt;BR /&gt; //CAN0IDAC = 0x10; /* Set four 16-bit Filters */&lt;BR /&gt; //CAN0IDAR2 = 0x00; //|\ 16-bit Filter 1&lt;BR /&gt; //CAN0IDMR2 = MASK_CODE_ST_ID_HIGH; //| \__ Accepts Standard Data Frame Msg&lt;BR /&gt; //CAN0IDAR3 = 0x00; //| / with ID 0x100&lt;BR /&gt; //CAN0IDMR3 = MASK_CODE_ST_ID_LOW; //|/&lt;BR /&gt; //CAN0IDAR4 = 0x00; //|\ 16-bit Filter 2&lt;BR /&gt; //CAN0IDMR4 = MASK_CODE_ST_ID_HIGH; //| \__ Accepts Standard Data Frame Msg&lt;BR /&gt; //CAN0IDAR5 = 0x00; //| / with ID 0x100&lt;BR /&gt; //CAN0IDMR5 = MASK_CODE_ST_ID_LOW; //|/&lt;BR /&gt; //CAN0IDAR6 = 0x00; //|\ 16-bit Filter 3&lt;BR /&gt; //CAN0IDMR6 = MASK_CODE_ST_ID_HIGH; //| \__ Accepts Standard Data Frame Msg&lt;BR /&gt; //CAN0IDAR7 = 0x00; //| / with ID 0x100&lt;BR /&gt; //CAN0IDMR7 = MASK_CODE_ST_ID_LOW; //|/&lt;BR /&gt; &lt;BR /&gt; /* Exit Initialization Mode Request */&lt;BR /&gt; CAN4CTL0 = 0x00; &lt;BR /&gt; &lt;BR /&gt; /* Wait for Normal Mode */&lt;BR /&gt; while ((CAN4CTL1&amp;amp;0x00) != 0); &lt;BR /&gt;}&lt;BR /&gt;unsigned char can4ReadFrame(void)&lt;BR /&gt;{&lt;BR /&gt; unsigned char length, index;&lt;BR /&gt;// unsigned char rxdata[8];&lt;BR /&gt;// unsigned int rxID;&lt;BR /&gt; unsigned char rxRTR;&lt;BR /&gt; unsigned char IDE;&lt;/P&gt;&lt;P&gt;if(CAN4RFLG &amp;amp; CAN4RFLG_RXF_MASK) return(0);&lt;BR /&gt; // if no new message=&amp;gt;return&lt;BR /&gt; //if(!(CAN4RFLG &amp;amp; CAN4RFLG_RXF_MASK)) return(0); &lt;BR /&gt; // if not standard identifier=&amp;gt;return &lt;BR /&gt; //if(CAN4RXIDR1 &amp;amp; 0x08) return(0);&lt;BR /&gt; // if not data frame=&amp;gt;return &lt;BR /&gt; //if(CAN4RXIDR1 &amp;amp; 0x10) return(0); &lt;BR /&gt; &lt;BR /&gt; /* Get Can ID */&lt;BR /&gt; rxID= CAN4RXIDR0;&lt;BR /&gt; rxID= (rxID&amp;lt;&amp;lt;3) + (CAN4RXIDR1&amp;gt;&amp;gt;5);&lt;BR /&gt; /* Get received data */&lt;BR /&gt; length = (CAN4RXDLR &amp;amp; 0x0F); &lt;BR /&gt; for (index=0; index&amp;lt;length; index++)&lt;BR /&gt; rxbuff[index] = *(&amp;amp;CAN4RXDSR0 + index);&lt;BR /&gt; &lt;BR /&gt; CAN4RFLG = CAN4RFLG_RXF_MASK; &lt;BR /&gt; &lt;BR /&gt; return 1; &lt;BR /&gt;}&lt;BR /&gt;unsigned char can4SendFrame(unsigned long id, unsigned char priority, unsigned char length, unsigned char *txdata)&lt;BR /&gt;{&lt;BR /&gt; unsigned char txbuffer;&lt;BR /&gt; unsigned char index;&lt;/P&gt;&lt;P&gt;//Check TXE Buffer&lt;BR /&gt; if(!CAN4TFLG) return 1;&lt;BR /&gt; &lt;BR /&gt; //Set TXE Buffer &lt;BR /&gt; CAN4TBSEL = CAN4TFLG;&lt;BR /&gt; txbuffer = CAN4TBSEL;&lt;/P&gt;&lt;P&gt;//Write ID &lt;BR /&gt; *((unsigned long *) ((unsigned long)(&amp;amp;CAN4TXIDR0))) = id;&lt;BR /&gt; CAN4TXIDR0=0B10101010;&lt;BR /&gt; CAN4TXIDR1=0B10100111;&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; //Write Data &lt;BR /&gt; for (index=0;index&amp;lt;length;index++) {&lt;BR /&gt; *(&amp;amp;CAN4TXDSR0 + index) = txdata[index];&lt;BR /&gt; }&lt;BR /&gt; /* Set Data Length Code */&lt;BR /&gt; CAN4TXDLR = length; &lt;BR /&gt; /* Set Priority */&lt;BR /&gt; CAN4TXTBPR = priority;&lt;BR /&gt; &lt;BR /&gt; /* Start transmission */ &lt;BR /&gt; CAN4TFLG = txbuffer;&lt;BR /&gt; &lt;BR /&gt; /* Wait transmission */ &lt;BR /&gt; while ( (CAN4TFLG &amp;amp; txbuffer) != txbuffer);&lt;BR /&gt;}&lt;BR /&gt;void Delay (void) {&lt;BR /&gt; unsigned int counter;&lt;BR /&gt; for (counter=0;counter&amp;lt;50000;counter++); &lt;BR /&gt;}&lt;BR /&gt;#pragma CODE_SEG NON_BANKED&lt;/P&gt;&lt;P&gt;void interrupt VectorNumber_Vcan4rx IQR_INT(void) {&lt;BR /&gt; unsigned char length, index;&lt;BR /&gt; unsigned char rxdata[8];&lt;/P&gt;&lt;P&gt;length = (CAN4RXDLR &amp;amp; 0x0F);&lt;BR /&gt; for (index=0; index&amp;lt;length; index++)&lt;BR /&gt; rxdata[index] = *(&amp;amp;CAN4RXDSR0 + index); /* Get received data */&lt;/P&gt;&lt;P&gt;CAN4RFLG = 0x01; /* Clear RXF */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;/P&gt;&lt;P&gt;void main(void) &lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;// SET Port-M For CAN4&lt;BR /&gt; DDRM_DDRM7=1;&lt;BR /&gt; DDRM_DDRM6=1;&lt;BR /&gt; MODRR_MODRR2=0;&lt;BR /&gt; MODRR_MODRR3=1;&lt;BR /&gt; //MSCAN Setting Function&lt;BR /&gt; can4Init();&lt;BR /&gt; //Wait CAN BUS SYNCH&lt;BR /&gt; while (!(CAN4CTL0 &amp;amp; 0x10));&lt;BR /&gt; //Clear CAN0 RXF flag &lt;BR /&gt; CAN4RFLG = 0x01;&lt;BR /&gt; //Enable CAN0 RX interrupt &lt;BR /&gt; CAN4RIER = 0x01;&lt;BR /&gt; //Enable all interrupt &lt;BR /&gt; EnableInterrupts;&lt;/P&gt;&lt;P&gt;for (;;) &lt;BR /&gt; {&lt;BR /&gt; /* CAN0 Send Data */&lt;BR /&gt; // errorflag = can4SendFrame((ST_ID_100), 0x00, sizeof(txbuff)-1, txbuff);&lt;BR /&gt; Delay();&lt;BR /&gt; //Delay();&lt;BR /&gt; // errorflag = can4ReadFrame();&lt;BR /&gt; //Task_CAN = can4ReadFrame();&lt;BR /&gt; // Task();&lt;BR /&gt; }&lt;BR /&gt;}&lt;BR /&gt;void Task(void)&lt;BR /&gt;{&lt;BR /&gt; if(Task_CAN &amp;amp; 0x01){&lt;BR /&gt; /* CAN0 Send Data */&lt;BR /&gt; Task_CAN=can4SendFrame((ST_ID_100), 0x00, sizeof(txbuff)-1, txbuff);&lt;BR /&gt; //Delay();&lt;BR /&gt; Delay();&lt;BR /&gt; Task_CAN=0x00;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 14 Jan 2019 03:42:32 GMT</pubDate>
    <dc:creator>edison_wu76</dc:creator>
    <dc:date>2019-01-14T03:42:32Z</dc:date>
    <item>
      <title>MSCAN Question</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MSCAN-Question/m-p/872263#M16267</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sir,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IC：mc9s12xet256&amp;nbsp;&lt;/P&gt;&lt;P&gt;Output：CAN4 = PIN117(TXD)，PIN118(RXD)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I try to use the MSCAN Rx interrupter, IC always not pass at &lt;SPAN style="color: #ff0000;"&gt;"&lt;SPAN style="background-color: #f6f6f6;"&gt;EnableInterrupts;"&lt;/SPAN&gt;&lt;/SPAN&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please help me , what happen ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks so much.&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;hidef.h&amp;gt; /* common defines and macros */&lt;BR /&gt;#include "derivative.h" /* derivative-specific definitions */&lt;BR /&gt;#define ST_ID_100 0x100&lt;/P&gt;&lt;P&gt;#define ACC_CODE_ID100 0x2000&lt;BR /&gt;#define ACC_CODE_ID100_HIGH ((ACC_CODE_ID100 &amp;amp; 0xFF00)&amp;gt;&amp;gt;8)&lt;BR /&gt;#define ACC_CODE_ID100_LOW (ACC_CODE_ID100 &amp;amp; 0x00FF)&lt;/P&gt;&lt;P&gt;/* Mask Code Definitions */&lt;BR /&gt;#define MASK_CODE_ST_ID 0x0007&lt;BR /&gt;#define MASK_CODE_ST_ID_HIGH ((MASK_CODE_ST_ID &amp;amp; 0xFF00)&amp;gt;&amp;gt;8)&lt;BR /&gt;#define MASK_CODE_ST_ID_LOW (MASK_CODE_ST_ID &amp;amp; 0xFF)&lt;BR /&gt;/* Task FlagDefinitions */&lt;BR /&gt;unsigned char Task_CAN =0x00;&lt;BR /&gt;unsigned char errorflag;&lt;BR /&gt;unsigned char txbuff[8] ="12345";&lt;BR /&gt;unsigned char rxbuff[8] ="";&lt;BR /&gt;unsigned int rxID;&lt;BR /&gt;/* Function Definitions */&lt;BR /&gt;void Task(void);&lt;/P&gt;&lt;P&gt;/* MSCAN0 Init */&lt;BR /&gt;void can4Init()&lt;BR /&gt;{&lt;BR /&gt; //MSCAN Initial mode &lt;BR /&gt; CAN4CTL0 = 0x01;&lt;BR /&gt; &lt;BR /&gt; //Check Entry the MSCAN Initial mode &lt;BR /&gt; while(!(CAN4CTL1 &amp;amp; 0x01));&lt;BR /&gt; &lt;BR /&gt; //MSCAN Enable &amp;amp; Loop Enable &lt;BR /&gt; CAN4CTL1 = 0x80;&lt;BR /&gt; &lt;BR /&gt; //fOSC=4MHz,CAN speed=250kbps&lt;BR /&gt; CAN4BTR0 = 0xC0;&lt;BR /&gt; CAN4BTR1 = 0x67;&lt;BR /&gt; &lt;BR /&gt; /* Close Filters */&lt;BR /&gt; CAN4IDAC = 0x30;&lt;BR /&gt; CAN4IDAR0=CAN4IDAR1=CAN4IDAR2=CAN4IDAR3=0xFF;&lt;BR /&gt; CAN4IDAR4=CAN4IDAR5=CAN4IDAR6=CAN4IDAR7=0xFF;&lt;BR /&gt; CAN4IDMR0=CAN4IDMR1=CAN4IDMR2=CAN4IDMR3=0xFF;&lt;BR /&gt; CAN4IDMR4=CAN4IDMR5=CAN4IDMR6=CAN4IDMR7=0xFF;&lt;BR /&gt; //CAN0IDAR0 = ACC_CODE_ID100_HIGH; //|\ 16-bit Filter 0&lt;BR /&gt; //CAN0IDMR0 = MASK_CODE_ST_ID_HIGH; //| \__ Accepts Standard Data Frame Msg&lt;BR /&gt; //CAN0IDAR1 = ACC_CODE_ID100_LOW; //| / with ID 0x100&lt;BR /&gt; //CAN0IDMR1 = MASK_CODE_ST_ID_LOW; //|/&lt;BR /&gt; /* Acceptance Filters */&lt;BR /&gt; //CAN0IDAC = 0x10; /* Set four 16-bit Filters */&lt;BR /&gt; //CAN0IDAR2 = 0x00; //|\ 16-bit Filter 1&lt;BR /&gt; //CAN0IDMR2 = MASK_CODE_ST_ID_HIGH; //| \__ Accepts Standard Data Frame Msg&lt;BR /&gt; //CAN0IDAR3 = 0x00; //| / with ID 0x100&lt;BR /&gt; //CAN0IDMR3 = MASK_CODE_ST_ID_LOW; //|/&lt;BR /&gt; //CAN0IDAR4 = 0x00; //|\ 16-bit Filter 2&lt;BR /&gt; //CAN0IDMR4 = MASK_CODE_ST_ID_HIGH; //| \__ Accepts Standard Data Frame Msg&lt;BR /&gt; //CAN0IDAR5 = 0x00; //| / with ID 0x100&lt;BR /&gt; //CAN0IDMR5 = MASK_CODE_ST_ID_LOW; //|/&lt;BR /&gt; //CAN0IDAR6 = 0x00; //|\ 16-bit Filter 3&lt;BR /&gt; //CAN0IDMR6 = MASK_CODE_ST_ID_HIGH; //| \__ Accepts Standard Data Frame Msg&lt;BR /&gt; //CAN0IDAR7 = 0x00; //| / with ID 0x100&lt;BR /&gt; //CAN0IDMR7 = MASK_CODE_ST_ID_LOW; //|/&lt;BR /&gt; &lt;BR /&gt; /* Exit Initialization Mode Request */&lt;BR /&gt; CAN4CTL0 = 0x00; &lt;BR /&gt; &lt;BR /&gt; /* Wait for Normal Mode */&lt;BR /&gt; while ((CAN4CTL1&amp;amp;0x00) != 0); &lt;BR /&gt;}&lt;BR /&gt;unsigned char can4ReadFrame(void)&lt;BR /&gt;{&lt;BR /&gt; unsigned char length, index;&lt;BR /&gt;// unsigned char rxdata[8];&lt;BR /&gt;// unsigned int rxID;&lt;BR /&gt; unsigned char rxRTR;&lt;BR /&gt; unsigned char IDE;&lt;/P&gt;&lt;P&gt;if(CAN4RFLG &amp;amp; CAN4RFLG_RXF_MASK) return(0);&lt;BR /&gt; // if no new message=&amp;gt;return&lt;BR /&gt; //if(!(CAN4RFLG &amp;amp; CAN4RFLG_RXF_MASK)) return(0); &lt;BR /&gt; // if not standard identifier=&amp;gt;return &lt;BR /&gt; //if(CAN4RXIDR1 &amp;amp; 0x08) return(0);&lt;BR /&gt; // if not data frame=&amp;gt;return &lt;BR /&gt; //if(CAN4RXIDR1 &amp;amp; 0x10) return(0); &lt;BR /&gt; &lt;BR /&gt; /* Get Can ID */&lt;BR /&gt; rxID= CAN4RXIDR0;&lt;BR /&gt; rxID= (rxID&amp;lt;&amp;lt;3) + (CAN4RXIDR1&amp;gt;&amp;gt;5);&lt;BR /&gt; /* Get received data */&lt;BR /&gt; length = (CAN4RXDLR &amp;amp; 0x0F); &lt;BR /&gt; for (index=0; index&amp;lt;length; index++)&lt;BR /&gt; rxbuff[index] = *(&amp;amp;CAN4RXDSR0 + index);&lt;BR /&gt; &lt;BR /&gt; CAN4RFLG = CAN4RFLG_RXF_MASK; &lt;BR /&gt; &lt;BR /&gt; return 1; &lt;BR /&gt;}&lt;BR /&gt;unsigned char can4SendFrame(unsigned long id, unsigned char priority, unsigned char length, unsigned char *txdata)&lt;BR /&gt;{&lt;BR /&gt; unsigned char txbuffer;&lt;BR /&gt; unsigned char index;&lt;/P&gt;&lt;P&gt;//Check TXE Buffer&lt;BR /&gt; if(!CAN4TFLG) return 1;&lt;BR /&gt; &lt;BR /&gt; //Set TXE Buffer &lt;BR /&gt; CAN4TBSEL = CAN4TFLG;&lt;BR /&gt; txbuffer = CAN4TBSEL;&lt;/P&gt;&lt;P&gt;//Write ID &lt;BR /&gt; *((unsigned long *) ((unsigned long)(&amp;amp;CAN4TXIDR0))) = id;&lt;BR /&gt; CAN4TXIDR0=0B10101010;&lt;BR /&gt; CAN4TXIDR1=0B10100111;&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; //Write Data &lt;BR /&gt; for (index=0;index&amp;lt;length;index++) {&lt;BR /&gt; *(&amp;amp;CAN4TXDSR0 + index) = txdata[index];&lt;BR /&gt; }&lt;BR /&gt; /* Set Data Length Code */&lt;BR /&gt; CAN4TXDLR = length; &lt;BR /&gt; /* Set Priority */&lt;BR /&gt; CAN4TXTBPR = priority;&lt;BR /&gt; &lt;BR /&gt; /* Start transmission */ &lt;BR /&gt; CAN4TFLG = txbuffer;&lt;BR /&gt; &lt;BR /&gt; /* Wait transmission */ &lt;BR /&gt; while ( (CAN4TFLG &amp;amp; txbuffer) != txbuffer);&lt;BR /&gt;}&lt;BR /&gt;void Delay (void) {&lt;BR /&gt; unsigned int counter;&lt;BR /&gt; for (counter=0;counter&amp;lt;50000;counter++); &lt;BR /&gt;}&lt;BR /&gt;#pragma CODE_SEG NON_BANKED&lt;/P&gt;&lt;P&gt;void interrupt VectorNumber_Vcan4rx IQR_INT(void) {&lt;BR /&gt; unsigned char length, index;&lt;BR /&gt; unsigned char rxdata[8];&lt;/P&gt;&lt;P&gt;length = (CAN4RXDLR &amp;amp; 0x0F);&lt;BR /&gt; for (index=0; index&amp;lt;length; index++)&lt;BR /&gt; rxdata[index] = *(&amp;amp;CAN4RXDSR0 + index); /* Get received data */&lt;/P&gt;&lt;P&gt;CAN4RFLG = 0x01; /* Clear RXF */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;/P&gt;&lt;P&gt;void main(void) &lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;// SET Port-M For CAN4&lt;BR /&gt; DDRM_DDRM7=1;&lt;BR /&gt; DDRM_DDRM6=1;&lt;BR /&gt; MODRR_MODRR2=0;&lt;BR /&gt; MODRR_MODRR3=1;&lt;BR /&gt; //MSCAN Setting Function&lt;BR /&gt; can4Init();&lt;BR /&gt; //Wait CAN BUS SYNCH&lt;BR /&gt; while (!(CAN4CTL0 &amp;amp; 0x10));&lt;BR /&gt; //Clear CAN0 RXF flag &lt;BR /&gt; CAN4RFLG = 0x01;&lt;BR /&gt; //Enable CAN0 RX interrupt &lt;BR /&gt; CAN4RIER = 0x01;&lt;BR /&gt; //Enable all interrupt &lt;BR /&gt; EnableInterrupts;&lt;/P&gt;&lt;P&gt;for (;;) &lt;BR /&gt; {&lt;BR /&gt; /* CAN0 Send Data */&lt;BR /&gt; // errorflag = can4SendFrame((ST_ID_100), 0x00, sizeof(txbuff)-1, txbuff);&lt;BR /&gt; Delay();&lt;BR /&gt; //Delay();&lt;BR /&gt; // errorflag = can4ReadFrame();&lt;BR /&gt; //Task_CAN = can4ReadFrame();&lt;BR /&gt; // Task();&lt;BR /&gt; }&lt;BR /&gt;}&lt;BR /&gt;void Task(void)&lt;BR /&gt;{&lt;BR /&gt; if(Task_CAN &amp;amp; 0x01){&lt;BR /&gt; /* CAN0 Send Data */&lt;BR /&gt; Task_CAN=can4SendFrame((ST_ID_100), 0x00, sizeof(txbuff)-1, txbuff);&lt;BR /&gt; //Delay();&lt;BR /&gt; Delay();&lt;BR /&gt; Task_CAN=0x00;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Jan 2019 03:42:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MSCAN-Question/m-p/872263#M16267</guid>
      <dc:creator>edison_wu76</dc:creator>
      <dc:date>2019-01-14T03:42:32Z</dc:date>
    </item>
    <item>
      <title>Re: MSCAN Question</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MSCAN-Question/m-p/872264#M16268</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11.5pt;"&gt;Have you tried debugging the code?&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;What did you see in "MSCAN Receiver Flag Register (CANRFLG)"?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;IC always not pass at&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color: #ff0000; background-color: #ffffff; border: 0px;"&gt;"&lt;SPAN style="background-color: #f6f6f6; border: 0px; font-weight: inherit;"&gt;EnableInterrupts;"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;.&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;What does it mean? &lt;SPAN style="font-size: 11.5pt;"&gt;Is the MCU resetting or is it in a loop&lt;/SPAN&gt;&lt;SPAN style="color: black; font-size: 10.0pt;"&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, the CAN examples for S12XEP100 can be useful: &lt;A href="https://community.nxp.com/docs/DOC-329209"&gt;LAMA's S12XE unofficial examples&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you. I hope it helps you.&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Diana&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Jan 2019 12:25:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MSCAN-Question/m-p/872264#M16268</guid>
      <dc:creator>dianabatrlova</dc:creator>
      <dc:date>2019-01-15T12:25:44Z</dc:date>
    </item>
  </channel>
</rss>

