<?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 Re: HCS08QG8 - IIC Read - Codewarrior Simulation in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08QG8-IIC-Read-Codewarrior-Simulation/m-p/204227#M16953</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have not an answer to your question neither a solution but a similar problem.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My implementation looks equal:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void IIC_Init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; // clear control and status register&lt;BR /&gt;&amp;nbsp; IIC1C = 0;&lt;BR /&gt;&amp;nbsp; IIC1S = 0;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; IIC1C_IICEN&amp;nbsp;&amp;nbsp; = 1; // Enable I2C;&lt;BR /&gt;&amp;nbsp; IIC1C_TXAK&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1; // not generate ACK by master after transfer;&lt;BR /&gt;&amp;nbsp; IIC1C_MST&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1; // Master mode actually; Generates a start signal&lt;BR /&gt;&amp;nbsp; IIC1C_TX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1; // Master is transmitting&lt;BR /&gt;&amp;nbsp; IIC1F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x40;&amp;nbsp;&amp;nbsp; // mult = 1, ICR = 0;&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and my read looks like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;byte IIC_readFirst_byte(byte addr)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; byte temp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; temp = addr &amp;lt;&amp;lt; 1;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if(!IIC1C_MST)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC1C_MST = 1;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; IIC1C_TXAK = 0; // RX/TX = 1; MS/SL = 1; TXAK = 0;&lt;BR /&gt;&amp;nbsp; IIC1C |= 0x30; // And generate START condition;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp; IIC1D = temp; // Address the slave and set up for master transmit;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; while(!IIC1S_IICIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait for byte transfer to complete&lt;BR /&gt;&amp;nbsp; IIC1S_IICIF = 0;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; while(IIC1S_RXAK); // check for RXAK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //-----Slave ACK occurred------------&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC1C_RSTA = 1; // set up repeated start;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp; IIC1D = 1; // read flag 1?&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; while(!IIC1S_IICIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait for byte transfer to complete&lt;BR /&gt;&amp;nbsp; IIC1S_IICIF = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; while (IIC1S_RXAK); // check for RXAK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //-----Slave ACK occurred------------&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IIC1C_TX = 0; // set up to receive;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; // dummy read&lt;BR /&gt;&amp;nbsp;&amp;nbsp; RD_data = IIC1D;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; while(!IIC1S_IICIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait for byte transfer to complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IIC1S_IICIF = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IIC1C_TXAK = 0; // want to read more;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return RD_data;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I do the reading then in an other function call because the data I want to receive&lt;/P&gt;&lt;P&gt;needs some time to be ready for transfer.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I do not get some "usable" data out of the I^2 bus and I do not know why.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I send the address of the slave out on the bus and afterwards I send the 1 for the&lt;/P&gt;&lt;P&gt;slave to write now, but I have found 2 astonishing surprises:&lt;/P&gt;&lt;P&gt;1. After I send the address of the slave the SDA line moves up after ack of the slave&lt;/P&gt;&lt;P&gt;has arrived! Is this normal???&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. When I do not do the step by step debugging I can see on the oszi that after&lt;/P&gt;&lt;P&gt;sending out the address of the slave, the restart routin is called and then not the 1&lt;/P&gt;&lt;P&gt;that I send afterwards is on the bus no, it is a 0xff! I have no glue where this comes from.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Do you know what is going on on the bus?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I do not really understand the information of the jpeg you have send with.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe finding togehter a solution for both problems?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Greetings,&lt;/P&gt;&lt;P&gt;xmas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 03 Jun 2010 23:38:54 GMT</pubDate>
    <dc:creator>xmas</dc:creator>
    <dc:date>2010-06-03T23:38:54Z</dc:date>
    <item>
      <title>HCS08QG8 - IIC Read - Codewarrior Simulation</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08QG8-IIC-Read-Codewarrior-Simulation/m-p/204226#M16952</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I searched the 8 bit and 8 bit Codewarrior forums, but did find a similar post.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Currently, I am working on a test program to read al byte from the Microchip 23008 port expander.&amp;nbsp; No actual use of data, but only a test.&amp;nbsp; I have USB oscilloscope on order to see the IIC bus.&amp;nbsp; In the mean time, I am using the Codewarrior simulator to view the IIC bus transfer.&amp;nbsp; See the code below.&amp;nbsp; My question relates to the second byte received.&amp;nbsp; Is there actually a second byte received ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void DISPReadBarGraphData(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; unsigned char dout;&lt;BR /&gt;&amp;nbsp; unsigned char acknowledge;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; SEND_START_BIT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send start signal&lt;BR /&gt;&amp;nbsp; IICD = DISP_MCP_1_SL_ADDR;&amp;nbsp;&amp;nbsp; // send MCP control byte (R\W bit preset to 0)&lt;BR /&gt;&amp;nbsp; while(!IICS_IICIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait for byte transfer to complete&lt;BR /&gt;&amp;nbsp; IICS_IICIF = 0;&lt;BR /&gt;&amp;nbsp; acknowledge = check_ACK();&lt;BR /&gt;&amp;nbsp; if (acknowledge == DEVICE_NO_ACK)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp; IICD = DISP_OLAT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send MCP OLAT register address&lt;BR /&gt;&amp;nbsp; while(!IICS_IICIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait for byte transfer to complete&lt;BR /&gt;&amp;nbsp; IICS_IICIF = 0;&lt;BR /&gt;&amp;nbsp; acknowledge = check_ACK();&lt;BR /&gt;&amp;nbsp; if (acknowledge == DEVICE_NO_ACK)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp; SEND_RPSTART_BIT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send repeat start bit&lt;BR /&gt;&amp;nbsp; IICD = DISP_MCP_1_SL_ADDR | 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send MCP control byte (R\W bit set to 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; while(!IICS_IICIF); // wait for byte transfer to complete&lt;BR /&gt;&amp;nbsp; IICS_IICIF = 0;&lt;BR /&gt;&amp;nbsp; acknowledge = check_ACK();&lt;BR /&gt;&amp;nbsp; if (acknowledge == DEVICE_NO_ACK)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp; IIC_RX_MODE;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set IIC for recieve mode&lt;BR /&gt;&amp;nbsp; IICC_TXAK = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // no ACK sent to slave&lt;BR /&gt;&amp;nbsp; dout = IICD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // dummy read to clock byte in&lt;BR /&gt;&amp;nbsp; while(!IICS_IICIF); // wait for byte transfer to complete&lt;BR /&gt;&amp;nbsp; IICS_IICIF = 0;&lt;BR /&gt;&amp;nbsp; SEND_STOP_BIT;&lt;BR /&gt;&amp;nbsp; dout = IICD;&lt;BR /&gt;&amp;nbsp; DISPGraphContent = dout;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 01 Jun 2010 01:44:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08QG8-IIC-Read-Codewarrior-Simulation/m-p/204226#M16952</guid>
      <dc:creator>FC</dc:creator>
      <dc:date>2010-06-01T01:44:03Z</dc:date>
    </item>
    <item>
      <title>Re: HCS08QG8 - IIC Read - Codewarrior Simulation</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08QG8-IIC-Read-Codewarrior-Simulation/m-p/204227#M16953</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have not an answer to your question neither a solution but a similar problem.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My implementation looks equal:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void IIC_Init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; // clear control and status register&lt;BR /&gt;&amp;nbsp; IIC1C = 0;&lt;BR /&gt;&amp;nbsp; IIC1S = 0;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; IIC1C_IICEN&amp;nbsp;&amp;nbsp; = 1; // Enable I2C;&lt;BR /&gt;&amp;nbsp; IIC1C_TXAK&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1; // not generate ACK by master after transfer;&lt;BR /&gt;&amp;nbsp; IIC1C_MST&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1; // Master mode actually; Generates a start signal&lt;BR /&gt;&amp;nbsp; IIC1C_TX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1; // Master is transmitting&lt;BR /&gt;&amp;nbsp; IIC1F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x40;&amp;nbsp;&amp;nbsp; // mult = 1, ICR = 0;&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and my read looks like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;byte IIC_readFirst_byte(byte addr)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; byte temp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; temp = addr &amp;lt;&amp;lt; 1;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if(!IIC1C_MST)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC1C_MST = 1;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; IIC1C_TXAK = 0; // RX/TX = 1; MS/SL = 1; TXAK = 0;&lt;BR /&gt;&amp;nbsp; IIC1C |= 0x30; // And generate START condition;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp; IIC1D = temp; // Address the slave and set up for master transmit;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; while(!IIC1S_IICIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait for byte transfer to complete&lt;BR /&gt;&amp;nbsp; IIC1S_IICIF = 0;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; while(IIC1S_RXAK); // check for RXAK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //-----Slave ACK occurred------------&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IIC1C_RSTA = 1; // set up repeated start;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp; IIC1D = 1; // read flag 1?&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; while(!IIC1S_IICIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait for byte transfer to complete&lt;BR /&gt;&amp;nbsp; IIC1S_IICIF = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; while (IIC1S_RXAK); // check for RXAK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //-----Slave ACK occurred------------&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IIC1C_TX = 0; // set up to receive;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; // dummy read&lt;BR /&gt;&amp;nbsp;&amp;nbsp; RD_data = IIC1D;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; while(!IIC1S_IICIF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait for byte transfer to complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IIC1S_IICIF = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IIC1C_TXAK = 0; // want to read more;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return RD_data;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I do the reading then in an other function call because the data I want to receive&lt;/P&gt;&lt;P&gt;needs some time to be ready for transfer.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I do not get some "usable" data out of the I^2 bus and I do not know why.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I send the address of the slave out on the bus and afterwards I send the 1 for the&lt;/P&gt;&lt;P&gt;slave to write now, but I have found 2 astonishing surprises:&lt;/P&gt;&lt;P&gt;1. After I send the address of the slave the SDA line moves up after ack of the slave&lt;/P&gt;&lt;P&gt;has arrived! Is this normal???&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. When I do not do the step by step debugging I can see on the oszi that after&lt;/P&gt;&lt;P&gt;sending out the address of the slave, the restart routin is called and then not the 1&lt;/P&gt;&lt;P&gt;that I send afterwards is on the bus no, it is a 0xff! I have no glue where this comes from.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Do you know what is going on on the bus?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I do not really understand the information of the jpeg you have send with.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe finding togehter a solution for both problems?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Greetings,&lt;/P&gt;&lt;P&gt;xmas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jun 2010 23:38:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/HCS08QG8-IIC-Read-Codewarrior-Simulation/m-p/204227#M16953</guid>
      <dc:creator>xmas</dc:creator>
      <dc:date>2010-06-03T23:38:54Z</dc:date>
    </item>
  </channel>
</rss>

