<?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 Any MC13192 genius Out there? in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Any-MC13192-genius-Out-there/m-p/142188#M6153</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Please, anyone here tell me why am i not able to read my MC13192 registers. My System consists of AVR AT90CAN128 MCU and MC13192 transceiver.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Whenever i send some address on MOSI during 1st SPI burst operation, in the two subsequent SPI bursts what i receive on MISO is 0x0000.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Is it that there are only few&amp;nbsp;specific transceiver registers which can be read? Right now, here in this code, i am trying to read the CLKO_Ctl register, 0x0A whose default value happens to be 0x7E86. But my MISO tells its 0x0000. Shall i take it? However, i have tried it with many more different registers.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am setting my SPI clock frequency to 8 MHz.I hope my transceiver is alive because CLKO is always present there whenever i probe on the CLKO pin.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#include&amp;lt;avr/io.h&amp;gt;&lt;BR /&gt;#include&amp;lt;inttypes.h&amp;gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;#define F_CPU 16000000L&amp;nbsp;&amp;nbsp; /* MCU Clock Speed */&lt;BR /&gt;#define SPI_PORT PORTB&amp;nbsp;&amp;nbsp;/* Define SPI port */&lt;BR /&gt;#define SS PB0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* The SPI Slave Select Bit */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;uint8_t temp = 0x65; /* initialized to some value. Have no meaning in perticular&amp;nbsp;*/&lt;BR /&gt;uint16_t Rx_SPI = 0x1234;&lt;BR /&gt;uint16_t delay_count;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void delay(uint8_t ms)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; uint16_t cnt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; asm volatile (&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "\n"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "L_dl1%=:" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "mov %A0, %A2" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "mov %B0, %B2" "\n"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "L_dl2%=:" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "sbiw %A0, 1" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "brne L_dl2%=" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "dec %1" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "brne L_dl1%=" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; : "=&amp;amp;w" (cnt)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; : "r" (ms), "r" (delay_count)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; );&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;void MC13192_Reset()&lt;BR /&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;PORTD |= (0 &amp;lt;&amp;lt; PD7); &amp;nbsp;/* RESET the transceiver by pulling low RESET pin */&lt;BR /&gt;&amp;nbsp;DDRD&amp;nbsp; |= (1 &amp;lt;&amp;lt; DDD7) | (1 &amp;lt;&amp;lt; DDD1) | (1&amp;lt;&amp;lt;DDD0); /* Set Direction register as output&amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;delay(10); /* Held the line low for 10 milliseconds */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;PORTD |= (1 &amp;lt;&amp;lt; PD7); /* Pull the RESET high */&lt;BR /&gt;&amp;nbsp;delay(25); /* wait for 25 milliseconds untill the Transceiver completely enters the Idle Mode */&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;void SPI_MasterInit(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;/* Set MOSI and SCK and SS as output */&lt;BR /&gt;&amp;nbsp;DDRB |= (1&amp;lt;&amp;lt;DDB2)|(1&amp;lt;&amp;lt;DDB1)|(1&amp;lt;&amp;lt;DDB0);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/* Enable SPI, Master, set clock rate fck/16 */&lt;BR /&gt;&amp;nbsp;SPCR |= (1&amp;lt;&amp;lt;SPE)|(1&amp;lt;&amp;lt;MSTR);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;SPSR |= (1&amp;lt;&amp;lt;SPI2X);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;void main()&lt;BR /&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;uint8_t reg_address = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;delay_count = F_CPU/4000;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;SPI_MasterInit(); /* Initialize MCU SPI Interface */&lt;BR /&gt;&amp;nbsp;MC13192_Reset(); /* RESET the Transceiver */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;reg_address = 0x0A; /* Select some register to be read */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;reg_address |= 0x80; /* MSB to 1 for reading the register */&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;SPI_PORT |= (0&amp;lt;&amp;lt;SS); /* Assert the SPI slave select PIN */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* 1st SPI burst */&lt;BR /&gt;&amp;nbsp;SPDR = reg_address;&amp;nbsp;&amp;nbsp; /* Send the register address */&lt;BR /&gt;&amp;nbsp;while(!(SPSR &amp;amp;(1&amp;lt;&amp;lt;SPIF))); /* Wait till transmission completes */&lt;BR /&gt;&amp;nbsp;temp = SPDR;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear the SPI data register to receive register contents */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* 2nd SPI burst */&lt;BR /&gt;&amp;nbsp;SPDR = 0xFF; /* Send dummy data for receiving register contents*/&lt;BR /&gt;&amp;nbsp;while(!(SPSR &amp;amp;(1&amp;lt;&amp;lt;SPIF)));/* Wait till transmission completes */&lt;BR /&gt;&amp;nbsp;temp = SPDR; /* Collect higher 8 bits of the register contents */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;Rx_SPI = temp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Assign the received MSB part of 16 bit register&lt;BR /&gt;&amp;nbsp;Rx_SPI = Rx_SPI &amp;lt;&amp;lt; 8; // contents and left shift the same.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* 3rd and final SPI burst */&lt;BR /&gt;&amp;nbsp;SPDR = 0xFF;/* Send dummy data for receiving register contents*/&lt;BR /&gt;&amp;nbsp;while(!(SPSR &amp;amp;(1&amp;lt;&amp;lt;SPIF)));/* Wait till transmission completes */&lt;BR /&gt;&amp;nbsp;temp = SPDR;/* Collect lower 8 bits of the register contents */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;Rx_SPI = temp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;SPI_PORT |= (1&amp;lt;&amp;lt;SS); /* Deassert the SPI slave select PIN */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;while(1); /* Infinite looping */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;}&lt;BR /&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 05 Aug 2007 19:59:26 GMT</pubDate>
    <dc:creator>Ravs</dc:creator>
    <dc:date>2007-08-05T19:59:26Z</dc:date>
    <item>
      <title>Any MC13192 genius Out there?</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Any-MC13192-genius-Out-there/m-p/142188#M6153</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Please, anyone here tell me why am i not able to read my MC13192 registers. My System consists of AVR AT90CAN128 MCU and MC13192 transceiver.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Whenever i send some address on MOSI during 1st SPI burst operation, in the two subsequent SPI bursts what i receive on MISO is 0x0000.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Is it that there are only few&amp;nbsp;specific transceiver registers which can be read? Right now, here in this code, i am trying to read the CLKO_Ctl register, 0x0A whose default value happens to be 0x7E86. But my MISO tells its 0x0000. Shall i take it? However, i have tried it with many more different registers.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am setting my SPI clock frequency to 8 MHz.I hope my transceiver is alive because CLKO is always present there whenever i probe on the CLKO pin.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#include&amp;lt;avr/io.h&amp;gt;&lt;BR /&gt;#include&amp;lt;inttypes.h&amp;gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;#define F_CPU 16000000L&amp;nbsp;&amp;nbsp; /* MCU Clock Speed */&lt;BR /&gt;#define SPI_PORT PORTB&amp;nbsp;&amp;nbsp;/* Define SPI port */&lt;BR /&gt;#define SS PB0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* The SPI Slave Select Bit */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;uint8_t temp = 0x65; /* initialized to some value. Have no meaning in perticular&amp;nbsp;*/&lt;BR /&gt;uint16_t Rx_SPI = 0x1234;&lt;BR /&gt;uint16_t delay_count;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void delay(uint8_t ms)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; uint16_t cnt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; asm volatile (&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "\n"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "L_dl1%=:" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "mov %A0, %A2" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "mov %B0, %B2" "\n"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "L_dl2%=:" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "sbiw %A0, 1" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "brne L_dl2%=" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "dec %1" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; "brne L_dl1%=" "\n\t"&lt;BR /&gt;&amp;nbsp;&amp;nbsp; : "=&amp;amp;w" (cnt)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; : "r" (ms), "r" (delay_count)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; );&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;void MC13192_Reset()&lt;BR /&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;PORTD |= (0 &amp;lt;&amp;lt; PD7); &amp;nbsp;/* RESET the transceiver by pulling low RESET pin */&lt;BR /&gt;&amp;nbsp;DDRD&amp;nbsp; |= (1 &amp;lt;&amp;lt; DDD7) | (1 &amp;lt;&amp;lt; DDD1) | (1&amp;lt;&amp;lt;DDD0); /* Set Direction register as output&amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;delay(10); /* Held the line low for 10 milliseconds */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;PORTD |= (1 &amp;lt;&amp;lt; PD7); /* Pull the RESET high */&lt;BR /&gt;&amp;nbsp;delay(25); /* wait for 25 milliseconds untill the Transceiver completely enters the Idle Mode */&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;void SPI_MasterInit(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;/* Set MOSI and SCK and SS as output */&lt;BR /&gt;&amp;nbsp;DDRB |= (1&amp;lt;&amp;lt;DDB2)|(1&amp;lt;&amp;lt;DDB1)|(1&amp;lt;&amp;lt;DDB0);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/* Enable SPI, Master, set clock rate fck/16 */&lt;BR /&gt;&amp;nbsp;SPCR |= (1&amp;lt;&amp;lt;SPE)|(1&amp;lt;&amp;lt;MSTR);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;SPSR |= (1&amp;lt;&amp;lt;SPI2X);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;void main()&lt;BR /&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;uint8_t reg_address = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;delay_count = F_CPU/4000;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;SPI_MasterInit(); /* Initialize MCU SPI Interface */&lt;BR /&gt;&amp;nbsp;MC13192_Reset(); /* RESET the Transceiver */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;reg_address = 0x0A; /* Select some register to be read */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;reg_address |= 0x80; /* MSB to 1 for reading the register */&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;SPI_PORT |= (0&amp;lt;&amp;lt;SS); /* Assert the SPI slave select PIN */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* 1st SPI burst */&lt;BR /&gt;&amp;nbsp;SPDR = reg_address;&amp;nbsp;&amp;nbsp; /* Send the register address */&lt;BR /&gt;&amp;nbsp;while(!(SPSR &amp;amp;(1&amp;lt;&amp;lt;SPIF))); /* Wait till transmission completes */&lt;BR /&gt;&amp;nbsp;temp = SPDR;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear the SPI data register to receive register contents */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* 2nd SPI burst */&lt;BR /&gt;&amp;nbsp;SPDR = 0xFF; /* Send dummy data for receiving register contents*/&lt;BR /&gt;&amp;nbsp;while(!(SPSR &amp;amp;(1&amp;lt;&amp;lt;SPIF)));/* Wait till transmission completes */&lt;BR /&gt;&amp;nbsp;temp = SPDR; /* Collect higher 8 bits of the register contents */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;Rx_SPI = temp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Assign the received MSB part of 16 bit register&lt;BR /&gt;&amp;nbsp;Rx_SPI = Rx_SPI &amp;lt;&amp;lt; 8; // contents and left shift the same.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* 3rd and final SPI burst */&lt;BR /&gt;&amp;nbsp;SPDR = 0xFF;/* Send dummy data for receiving register contents*/&lt;BR /&gt;&amp;nbsp;while(!(SPSR &amp;amp;(1&amp;lt;&amp;lt;SPIF)));/* Wait till transmission completes */&lt;BR /&gt;&amp;nbsp;temp = SPDR;/* Collect lower 8 bits of the register contents */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;Rx_SPI = temp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;SPI_PORT |= (1&amp;lt;&amp;lt;SS); /* Deassert the SPI slave select PIN */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;while(1); /* Infinite looping */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;}&lt;BR /&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 05 Aug 2007 19:59:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Any-MC13192-genius-Out-there/m-p/142188#M6153</guid>
      <dc:creator>Ravs</dc:creator>
      <dc:date>2007-08-05T19:59:26Z</dc:date>
    </item>
    <item>
      <title>Re: Any MC13192 genius Out there?</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Any-MC13192-genius-Out-there/m-p/142189#M6154</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;hello..., I m experiencing the same problem. I am using MC13213 module which has in-built hcs08 controller and a modem. I can able to send the adress during 1st SPI burst but i m getting 0x00 in the SPI1D for next 2 SPI burst. If u have solved ur problem please help me too... I got stucked up here and i cant able to proceed further. Thanks in advance...&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Aug 2007 14:41:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Any-MC13192-genius-Out-there/m-p/142189#M6154</guid>
      <dc:creator>Paven</dc:creator>
      <dc:date>2007-08-17T14:41:45Z</dc:date>
    </item>
  </channel>
</rss>

