<?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: IIC help please...MC9S08SH in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/IIC-help-please-MC9S08SH/m-p/205044#M17094</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I finally got the sensor to work. Thanks Dave for the suggestions about using delays to troubleshoot. I think what i was missing all along might have been&lt;/P&gt;&lt;P&gt;- resend the start command between write and read&lt;/P&gt;&lt;P&gt;- disable the iic module when i have finished reading the data (otherwise on the next cycle things froze up)&lt;/P&gt;&lt;P&gt;- only setting MST=0 did not help ...hence had to disable the whole iic module.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;the final code is shown below. Thanks once more&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// this version of code works.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#include &amp;lt;hidef.h&amp;gt; /* for EnableInterrupts macro */&lt;BR /&gt;#include "derivative.h" /* include peripheral declarations */&lt;/P&gt;&lt;P&gt;#define trimvalue 0xFFAE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //debugger calculated trim value&lt;BR /&gt;#define LED3&amp;nbsp; PTCD_PTCD1&lt;BR /&gt;#define LED4&amp;nbsp; PTCD_PTCD0&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#define IRaddress&amp;nbsp;&amp;nbsp; 0x20&lt;BR /&gt;#define IRreceive&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define IRtransmit&amp;nbsp; 1&lt;BR /&gt;#define inch&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define cm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;BR /&gt;#define raw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;volatile unsigned int data1,data2,data3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;/*SCI setup*/&lt;BR /&gt;void SCI_init(void){&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; SCIBD = 26;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set baud rate to 19200= 8MHz/(16*(SCIBD))&lt;BR /&gt;&amp;nbsp; SCIC2 =0b00001100;&amp;nbsp; //enable receive and transmit&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;/* simple software delay */&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;void delay (unsigned int long value){&lt;BR /&gt;&amp;nbsp; for (;value&amp;gt;0;value--)__RESET_WATCHDOG();&lt;BR /&gt;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;/*MCU setup*/&lt;/P&gt;&lt;P&gt;void MCU_init (void){&lt;BR /&gt;&amp;nbsp;ICSTRM&amp;nbsp; =&amp;nbsp; trimvalue;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set to calcuated trim value&lt;BR /&gt;&amp;nbsp;PTCDD = 0b00000011;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // make PTC0,1 output for leds&lt;BR /&gt;&amp;nbsp;SPMSC1_BGBE =1;&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; //enable bandgap buffer.&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/*IIC setup*/&lt;BR /&gt;&amp;nbsp; void IIC_init(void){&lt;BR /&gt;&amp;nbsp; IICC1_IICEN = 1;&amp;nbsp; //disable module IIC module&lt;BR /&gt;&amp;nbsp; IICF_MULT= 0x10;&amp;nbsp; //divide by 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01&lt;BR /&gt;&amp;nbsp; IICF_ICR=&amp;nbsp; 0x00;&amp;nbsp; //divide by 40;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 07&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR /&gt;/*master send function call*/&amp;nbsp;&lt;BR /&gt;&amp;nbsp; void master_send (void){&lt;BR /&gt;&amp;nbsp; IICC1= 0b10111000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //iic enable, no iterrupt,master,transmit,ack on,)&lt;BR /&gt;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;/*master receive function call*/&lt;BR /&gt;&amp;nbsp; void master_receive (void){&lt;BR /&gt;&amp;nbsp; IICC1= 0b10101000;&lt;BR /&gt;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;/*iic disable*/&lt;BR /&gt;void iic_disable(void){&lt;BR /&gt;&amp;nbsp; IICC1_IICEN = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //disable iic module&lt;BR /&gt;&amp;nbsp; IICD=0;&lt;BR /&gt;&amp;nbsp; return;&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; //write zeros to iic data register.&lt;BR /&gt;}&lt;BR /&gt;void main(void) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; EnableInterrupts; /* enable interrupts */&lt;BR /&gt;&amp;nbsp; MCU_init();&lt;BR /&gt;&amp;nbsp; SCI_init();&lt;BR /&gt;&amp;nbsp; IIC_init();&lt;BR /&gt;&amp;nbsp; SCID=0x22;&amp;nbsp;&amp;nbsp; // test to check reset (help debug)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;for(;&lt;IMG alt=":smileywink:" class="emoticon emoticon-smileywink" id="smileywink" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif" title="Smiley Wink" /&gt; {&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10000);&amp;nbsp;&amp;nbsp;&amp;nbsp; //allow time for sensor to initiate!&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //-----setup sensor units&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED3=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // to help debug&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; master_send();&amp;nbsp;&amp;nbsp; //configure as master, transmit mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD=(0x20&amp;lt;&amp;lt;1)|0;&amp;nbsp; //send address and write bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!IICS_TCF)__RESET_WATCHDOG(); //wait until transmission finishes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD= cm;&amp;nbsp;&amp;nbsp;&amp;nbsp; //tell sensor to send units in CM&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!IICS_TCF)__RESET_WATCHDOG(); //wait until transmission finishes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay(10);&lt;BR /&gt;&amp;nbsp; if(IICS_RXAK==0){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED4=~LED4;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //to help debug&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICC1_RSTA=1 ;&amp;nbsp;&amp;nbsp; //set restart bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //--------read sensor&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; master_send();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD=(0x20&amp;lt;&amp;lt;1)|1;&amp;nbsp; //send address and receive bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!IICS_TCF)__RESET_WATCHDOG(); //wait for trans to complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; master_receive();&amp;nbsp;&amp;nbsp;&amp;nbsp; //put in receive mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data1 = IICD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //dummy read&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!IICS_TCF)__RESET_WATCHDOG(); //wait for trans to complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICC_TXAK=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //No ACK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data2 = IICD;&amp;nbsp;&amp;nbsp;&amp;nbsp; // REAL DATA&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICC1_MST=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //release bus&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iic_disable();&amp;nbsp;&amp;nbsp;&amp;nbsp; //disable iic module all together.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //--------serial transmit&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (SCIS1_TDRE==0){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if not ready to send wait&lt;BR /&gt;&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; __RESET_WATCHDOG();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; SCID=data2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG(); /* feeds the dog */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; } /* loop forever */&lt;BR /&gt;&amp;nbsp; /* please make sure that you never leave main */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will clean things up later on....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 06 Aug 2009 10:08:50 GMT</pubDate>
    <dc:creator>rokzar</dc:creator>
    <dc:date>2009-08-06T10:08:50Z</dc:date>
    <item>
      <title>IIC help please...MC9S08SH</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/IIC-help-please-MC9S08SH/m-p/205041#M17091</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;Hello&lt;/SPAN&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;put&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;it&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;simply&lt;/SPAN&gt;, &lt;SPAN class="j3"&gt;i&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;have&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;given&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;it&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;my&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;all&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;failed&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;trying&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;make&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;an&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;IR&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;sensor&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;work&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;with&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;IIC&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;module&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;on&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;my&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;board&lt;/SPAN&gt;. &lt;SPAN class="j2"&gt;I&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;have&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;read&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;all&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;IIC&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;app&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;notes&lt;/SPAN&gt;, &lt;SPAN class="j2"&gt;search&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;this&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;forum&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;back&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;forth&lt;/SPAN&gt;..&lt;SPAN class="j3"&gt;.read&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;HCS08&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;unleashed&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;now&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;i&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;simply&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;have&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;ask&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;for&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;help&lt;/SPAN&gt;.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;My&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;dilemma&lt;/SPAN&gt;:&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j3"&gt;-I&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;am&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;new&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;programming&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;so&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;thats&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;a&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;handicap&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;right&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;there&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j3"&gt;-my&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;code&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;only&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;seems&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;WORK&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;only&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;when&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;i&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;step&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;line&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;by&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;line&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;while&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;in&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;debug&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;mode&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j3"&gt;-i&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;have&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;scoped&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;my&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;signals&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;they&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;appear&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;be&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;functioning&lt;/SPAN&gt; (&lt;SPAN class="j2"&gt;only&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;in&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;debug&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;mode&lt;/SPAN&gt;)&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j3"&gt;-Once&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;i&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;hit&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;run&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;button&lt;/SPAN&gt;,&amp;nbsp;&lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;code&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;completes&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;one&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;loop&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;then&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;freezes&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;at&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;while&lt;/SPAN&gt; (!(&lt;SPAN class="j3"&gt;IICS_&lt;/SPAN&gt;&lt;SPAN class="j3"&gt;IICIF&lt;/SPAN&gt;));&amp;nbsp; //&amp;nbsp; &amp;lt;---&amp;nbsp; &lt;SPAN class="j2"&gt;stops&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;here&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;during&lt;/SPAN&gt; "&lt;SPAN class="j2"&gt;free&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;run&lt;/SPAN&gt;"&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;When&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;this&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;occurs&lt;/SPAN&gt;, &lt;SPAN class="j2"&gt;my&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;SDA&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;line&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;is&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;held&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;low&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;by&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;sensor&lt;/SPAN&gt;. &lt;SPAN class="j2"&gt;It&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;stops&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;at&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;same&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;place&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;even&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;when&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;i&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;disable&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;watchdog&lt;/SPAN&gt;.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;The&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;sensor&lt;/SPAN&gt; &lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.robotshop.us%2Fsolarbotics-i2c-it-ir-rangefinder-1.html" rel="nofollow" target="_blank"&gt;http://www.robotshop.us/solarbotics-i2c-it-ir-rangefinder-1.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;comes&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;with&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;code&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;for&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j3"&gt;PICS&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;other&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;processors&lt;/SPAN&gt;, &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;it&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;appears&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;be&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;very&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;easy&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;work&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;with&lt;/SPAN&gt;, &lt;SPAN class="j2"&gt;but&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;i&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j3"&gt;cant&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;get&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;it&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;work&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;with&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;what&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;i&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;have&lt;/SPAN&gt; (&lt;SPAN class="j3"&gt;MC9S08SH&lt;/SPAN&gt;)&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;MY&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;CODE&lt;/SPAN&gt;:&lt;/P&gt;&lt;P&gt;--------------------------------------------------------------------------------&amp;nbsp;&lt;/P&gt;&lt;P&gt;#&lt;SPAN class="j2"&gt;include&lt;/SPAN&gt; &amp;lt;&lt;SPAN class="j3"&gt;hidef.h&lt;/SPAN&gt;&amp;gt; /* &lt;SPAN class="j2"&gt;for&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;EnableInterrupts&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;macro&lt;/SPAN&gt; */&lt;BR /&gt;#&lt;SPAN class="j2"&gt;include&lt;/SPAN&gt; "&lt;SPAN class="j3"&gt;derivative.h&lt;/SPAN&gt;" /* &lt;SPAN class="j2"&gt;include&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;peripheral&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;declarations&lt;/SPAN&gt; */&lt;/P&gt;&lt;P&gt;#&lt;SPAN class="j2"&gt;define&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;trimvalue&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;0xFFAE&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j2"&gt;debugger&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;calculated&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;trim&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;value&lt;/SPAN&gt;&lt;BR /&gt;#&lt;SPAN class="j2"&gt;define&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;LED3&lt;/SPAN&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;PTCD&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;PTCD1&lt;/SPAN&gt;&lt;BR /&gt;#&lt;SPAN class="j2"&gt;define&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;LED4&lt;/SPAN&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;PTCD&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;PTCD0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#&lt;SPAN class="j2"&gt;define&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;IRaddress&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;0x20&lt;/SPAN&gt;&lt;BR /&gt;#&lt;SPAN class="j2"&gt;define&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;IRreceive&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j4"&gt;0&lt;/SPAN&gt;&lt;BR /&gt;#&lt;SPAN class="j2"&gt;define&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;IRtransmit&lt;/SPAN&gt;&amp;nbsp; &lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;&lt;BR /&gt;#&lt;SPAN class="j2"&gt;define&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;inch&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;&lt;BR /&gt;#&lt;SPAN class="j2"&gt;define&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;cm&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j4"&gt;2&lt;/SPAN&gt;&lt;BR /&gt;#&lt;SPAN class="j2"&gt;define&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;raw&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j4"&gt;3&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;int&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;data1&lt;/SPAN&gt;,&lt;SPAN class="j3"&gt;data2&lt;/SPAN&gt;,&lt;SPAN class="j3"&gt;data3&lt;/SPAN&gt;,&lt;SPAN class="j3"&gt;data4&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j2"&gt;for&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;data&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;testing&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;/*&lt;SPAN class="j3"&gt;SCI&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;setup&lt;/SPAN&gt;*/&lt;BR /&gt;&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;SCI&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;init&lt;/SPAN&gt;(&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt;){&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;SCIBD&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;26&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j2"&gt;set&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;baud&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;rate&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;19200&lt;/SPAN&gt;= &lt;SPAN class="j3"&gt;8MHz&lt;/SPAN&gt;/(&lt;SPAN class="j4"&gt;16&lt;/SPAN&gt;*(&lt;SPAN class="j3"&gt;SCIBD&lt;/SPAN&gt;))&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;SCIC2&lt;/SPAN&gt; =&lt;SPAN class="j3"&gt;0b00001100&lt;/SPAN&gt;;&amp;nbsp; //&lt;SPAN class="j2"&gt;enable&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;receive&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;transmit&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;/* &lt;SPAN class="j2"&gt;simple&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;software&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;delay&lt;/SPAN&gt; */&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;delay&lt;/SPAN&gt; (&lt;SPAN class="j2"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;int&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;long&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;value&lt;/SPAN&gt;){&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j2"&gt;for&lt;/SPAN&gt; (;&lt;SPAN class="j2"&gt;value&lt;/SPAN&gt;&amp;lt;=&lt;SPAN class="j4"&gt;0&lt;/SPAN&gt;;&lt;SPAN class="j2"&gt;value&lt;/SPAN&gt;--)__&lt;SPAN class="j2"&gt;RESET&lt;/SPAN&gt;_&lt;SPAN class="j2"&gt;WATCHDOG&lt;/SPAN&gt;();&lt;BR /&gt;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;/*&lt;SPAN class="j3"&gt;MCU&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;setup&lt;/SPAN&gt;*/&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;MCU&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;init&lt;/SPAN&gt; (&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt;){&lt;BR /&gt;&amp;nbsp;&lt;SPAN class="j3"&gt;ICSTRM&lt;/SPAN&gt;&amp;nbsp; =&amp;nbsp; &lt;SPAN class="j3"&gt;trimvalue&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j2"&gt;set&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;calcuated&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;trim&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;value&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&lt;SPAN class="j3"&gt;PTCDD&lt;/SPAN&gt; = &lt;SPAN class="j3"&gt;0b00000011&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;SPAN class="j2"&gt;make&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;PTC0&lt;/SPAN&gt;,&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;output&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;for&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;leds&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&lt;SPAN class="j3"&gt;SPMSC1&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;BGBE&lt;/SPAN&gt; =&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;;&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; //&lt;SPAN class="j2"&gt;enable&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;bandgap&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;buffer&lt;/SPAN&gt;.&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/*&lt;SPAN class="j3"&gt;IIC&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;setup&lt;/SPAN&gt;*/&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j2"&gt;void&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;IIC&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;init&lt;/SPAN&gt;(&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt;){&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;IICC1&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;IICEN&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;;&amp;nbsp; //&lt;SPAN class="j2"&gt;enable&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;module&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;IIC&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;module&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;IICF&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;MULT&lt;/SPAN&gt;= &lt;SPAN class="j3"&gt;0x01&lt;/SPAN&gt;;&amp;nbsp; //&lt;SPAN class="j2"&gt;divide&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;by&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;2&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;IICF&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;ICR&lt;/SPAN&gt;=&amp;nbsp; &lt;SPAN class="j3"&gt;0x14&lt;/SPAN&gt;;&amp;nbsp; //&lt;SPAN class="j2"&gt;divide&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;by&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;80&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;SPAN class="j3"&gt;50khz&lt;/SPAN&gt;)&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR /&gt;/*&lt;SPAN class="j2"&gt;master&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;send&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;function&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;call&lt;/SPAN&gt;*/&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j2"&gt;void&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;master&lt;/SPAN&gt;_&lt;SPAN class="j2"&gt;send&lt;/SPAN&gt; (&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt;){&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;IICC1&lt;/SPAN&gt;= &lt;SPAN class="j3"&gt;0b10110000&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j3"&gt;iic&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;enable&lt;/SPAN&gt;, &lt;SPAN class="j2"&gt;no&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;iterrupt&lt;/SPAN&gt;,&lt;SPAN class="j2"&gt;master&lt;/SPAN&gt;,&lt;SPAN class="j2"&gt;transmit&lt;/SPAN&gt;,&lt;SPAN class="j3"&gt;ack&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;on&lt;/SPAN&gt;,)&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j2"&gt;return&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;/*&lt;SPAN class="j2"&gt;master&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;receive&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;function&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;call&lt;/SPAN&gt;*/&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j2"&gt;void&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;master&lt;/SPAN&gt;_&lt;SPAN class="j2"&gt;receive&lt;/SPAN&gt; (&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt;){&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;IICC1&lt;/SPAN&gt;= &lt;SPAN class="j3"&gt;0b10101000&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j2"&gt;return&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;/*&lt;SPAN class="j3"&gt;iic&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;disable&lt;/SPAN&gt;*/&lt;BR /&gt;&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;iic&lt;/SPAN&gt;_&lt;SPAN class="j2"&gt;disable&lt;/SPAN&gt;(&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt;){&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;IICC1&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;IICEN&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;0&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j2"&gt;disable&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;iic&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;module&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j2"&gt;return&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;}&lt;BR /&gt;&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;main&lt;/SPAN&gt;(&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;EnableInterrupts&lt;/SPAN&gt;; /* &lt;SPAN class="j2"&gt;enable&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;interrupts&lt;/SPAN&gt; */&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;MCU&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;init&lt;/SPAN&gt;();&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;SCI&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;init&lt;/SPAN&gt;();&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;IIC&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;init&lt;/SPAN&gt;();&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j3"&gt;SCID&lt;/SPAN&gt;=&lt;SPAN class="j3"&gt;0x22&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp; // &lt;SPAN class="j2"&gt;test&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;check&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;reset&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;for&lt;/SPAN&gt;(;&lt;A href="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif"&gt;&lt;IMG alt=":smileywink:" class="emoticon emoticon-smileywink" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif" title="Smiley Wink" /&gt;&lt;/A&gt; {&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;LED3&lt;/SPAN&gt;=&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;master&lt;/SPAN&gt;_&lt;SPAN class="j2"&gt;send&lt;/SPAN&gt;();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;IICD&lt;/SPAN&gt;=&lt;SPAN class="j3"&gt;0x20&lt;/SPAN&gt;&amp;lt;&amp;lt;&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;|&lt;SPAN class="j4"&gt;0&lt;/SPAN&gt;;&amp;nbsp; //&lt;SPAN class="j2"&gt;write&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;address&lt;/SPAN&gt;, &lt;SPAN class="j2"&gt;put&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;in&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;receive&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;mode&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;while&lt;/SPAN&gt; (!(&lt;SPAN class="j3"&gt;IICS&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;IICIF&lt;/SPAN&gt;));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;IICS&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;IICIF&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;while&lt;/SPAN&gt;(&lt;SPAN class="j3"&gt;IICS&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;RXAK&lt;/SPAN&gt;); // &lt;SPAN class="j2"&gt;check&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;for&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;RX&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;ack&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j3"&gt;IICC&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;RSTA&lt;/SPAN&gt;=&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j2"&gt;restart&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;send&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;IICD&lt;/SPAN&gt;=&lt;SPAN class="j4"&gt;2&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;SPAN class="j2"&gt;ask&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;sensor&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;send&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;in&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;CM&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;while&lt;/SPAN&gt; (!(&lt;SPAN class="j3"&gt;IICS&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;IICIF&lt;/SPAN&gt;));&amp;nbsp; //&amp;nbsp; &lt;STRONG style=": ; color: #FFCC00;"&gt;&amp;lt;---&amp;nbsp; &lt;SPAN class="j2"&gt;stops&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;here&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;during&lt;/SPAN&gt; "&lt;SPAN class="j2"&gt;free&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;run&lt;/SPAN&gt;"&lt;BR /&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;IICS&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;IICIF&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;while&lt;/SPAN&gt;(&lt;SPAN class="j3"&gt;IICS&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;RXAK&lt;/SPAN&gt;); // &lt;SPAN class="j2"&gt;check&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;for&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;RX&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;ack&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;IICC&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;RSTA&lt;/SPAN&gt;=&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j2"&gt;restart&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;send&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;IICD&lt;/SPAN&gt;=&lt;SPAN class="j3"&gt;0x20&lt;/SPAN&gt;&amp;lt;&amp;lt;&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;|&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;;&amp;nbsp; //&lt;SPAN class="j2"&gt;write&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;address&lt;/SPAN&gt;, &lt;SPAN class="j2"&gt;put&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;in&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;transmit&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;mode&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;delay&lt;/SPAN&gt;(&lt;SPAN class="j4"&gt;10000&lt;/SPAN&gt;);&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="j2"&gt;while&lt;/SPAN&gt; (!(&lt;SPAN class="j3"&gt;IICS&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;IICIF&lt;/SPAN&gt;));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;IICS&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;IICIF&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;while&lt;/SPAN&gt;(&lt;SPAN class="j3"&gt;IICS&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;RXAK&lt;/SPAN&gt;); // &lt;SPAN class="j2"&gt;check&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;for&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;RX&lt;/SPAN&gt; &lt;SPAN class="j3"&gt;ack&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //--------------------------------&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;IICC&lt;/SPAN&gt;_&lt;SPAN class="j2"&gt;TX&lt;/SPAN&gt;=&lt;SPAN class="j4"&gt;0&lt;/SPAN&gt;; //&lt;SPAN class="j2"&gt;switch&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;receive&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;mode&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;data1&lt;/SPAN&gt;=&lt;SPAN class="j3"&gt;IICD&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j2"&gt;dummy&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;read&lt;/SPAN&gt;!!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000000;"&gt;&lt;STRONG&gt;&amp;lt;-&lt;SPAN class="j3"&gt;-reads&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;sensor&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;value&lt;/SPAN&gt;!!&lt;BR /&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;IICC&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;TXAK&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;; // &lt;SPAN class="j2"&gt;acknowledge&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;disable&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;--&amp;nbsp;&lt;SPAN class="j2"&gt;have&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;tried&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;swapping&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;bits&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN class="j2"&gt;and&lt;/SPAN&gt;&amp;nbsp;places&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;IICC&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;MST&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;0&lt;/SPAN&gt;; // &lt;SPAN class="j2"&gt;generate&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;stop&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;signal&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;data2&lt;/SPAN&gt; = &lt;SPAN class="j3"&gt;IICD&lt;/SPAN&gt;; // &lt;SPAN class="j2"&gt;read&lt;/SPAN&gt;&amp;nbsp;correct &lt;SPAN class="j2"&gt;data&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;if&lt;/SPAN&gt;(&lt;SPAN class="j3"&gt;SCIS1&lt;/SPAN&gt;_&lt;SPAN class="j3"&gt;TDRE&lt;/SPAN&gt; ==&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;SPAN class="j2"&gt;serial&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;for&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;debug&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;SCID&lt;/SPAN&gt;=&lt;SPAN class="j3"&gt;data2&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; __&lt;SPAN class="j2"&gt;RESET&lt;/SPAN&gt;_&lt;SPAN class="j2"&gt;WATCHDOG&lt;/SPAN&gt;(); /* &lt;SPAN class="j2"&gt;feeds&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;dog&lt;/SPAN&gt; */&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; } /* &lt;SPAN class="j2"&gt;loop&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;forever&lt;/SPAN&gt; */&lt;BR /&gt;&amp;nbsp; /* &lt;SPAN class="j2"&gt;please&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;make&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;sure&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;that&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;you&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;never&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;leave&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;main&lt;/SPAN&gt; */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;thanks&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;in&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;advance&lt;/SPAN&gt;.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Aug 2009 11:10:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/IIC-help-please-MC9S08SH/m-p/205041#M17091</guid>
      <dc:creator>rokzar</dc:creator>
      <dc:date>2009-08-05T11:10:22Z</dc:date>
    </item>
    <item>
      <title>Re: IIC help please...MC9S08SH</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/IIC-help-please-MC9S08SH/m-p/205042#M17092</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As you say your code works when you single step, perhaps you are not meeting a timing requirement when you run at full speed. Try putting delays in between the preceeding few lines. If this works you can hone down the delays to find the problem area.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;By the way, your delay routine looks wrong. You have for(;value&amp;lt;=0;value--), this should be&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(;value&amp;gt;=0;value--) assuming you are supplying positive values for value. (You could of course change this to for(;value&amp;gt;0;value--) if you wanted to use unsigned values).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Aug 2009 16:34:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/IIC-help-please-MC9S08SH/m-p/205042#M17092</guid>
      <dc:creator>DRichards</dc:creator>
      <dc:date>2009-08-05T16:34:20Z</dc:date>
    </item>
    <item>
      <title>Re: IIC help please...MC9S08SH</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/IIC-help-please-MC9S08SH/m-p/205043#M17093</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;DRich- thanks for pointing out the delay error.&lt;/P&gt;&lt;P&gt;I&amp;nbsp;also&amp;nbsp;suspect&amp;nbsp; i am having a timing/sequence issue. I have tried twicking the IIC baud rate and adding delays but it&amp;nbsp;doesnt work either....(still get stuck at the same point).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;what i dont understand is why the sensor appears to be holding the SDA line low after the first loop, and why the processor thinks it getting the first ACK but not the second!! (on the second loop around).&amp;nbsp;I have been working&amp;nbsp;on this for almost a&amp;nbsp;week and&amp;nbsp;am at the point of giving up and using an analog sensor.....&lt;/P&gt;&lt;P&gt;&amp;nbsp;I will post&amp;nbsp;the&amp;nbsp;sample code for PICS and maybe someone will be able to point out something&amp;nbsp;I'm missing.&lt;/P&gt;&lt;P&gt;Ill keep you posted. &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Aug 2009 21:44:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/IIC-help-please-MC9S08SH/m-p/205043#M17093</guid>
      <dc:creator>rokzar</dc:creator>
      <dc:date>2009-08-05T21:44:04Z</dc:date>
    </item>
    <item>
      <title>Re: IIC help please...MC9S08SH</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/IIC-help-please-MC9S08SH/m-p/205044#M17094</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I finally got the sensor to work. Thanks Dave for the suggestions about using delays to troubleshoot. I think what i was missing all along might have been&lt;/P&gt;&lt;P&gt;- resend the start command between write and read&lt;/P&gt;&lt;P&gt;- disable the iic module when i have finished reading the data (otherwise on the next cycle things froze up)&lt;/P&gt;&lt;P&gt;- only setting MST=0 did not help ...hence had to disable the whole iic module.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;the final code is shown below. Thanks once more&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// this version of code works.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#include &amp;lt;hidef.h&amp;gt; /* for EnableInterrupts macro */&lt;BR /&gt;#include "derivative.h" /* include peripheral declarations */&lt;/P&gt;&lt;P&gt;#define trimvalue 0xFFAE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //debugger calculated trim value&lt;BR /&gt;#define LED3&amp;nbsp; PTCD_PTCD1&lt;BR /&gt;#define LED4&amp;nbsp; PTCD_PTCD0&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#define IRaddress&amp;nbsp;&amp;nbsp; 0x20&lt;BR /&gt;#define IRreceive&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define IRtransmit&amp;nbsp; 1&lt;BR /&gt;#define inch&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define cm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;BR /&gt;#define raw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;volatile unsigned int data1,data2,data3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;/*SCI setup*/&lt;BR /&gt;void SCI_init(void){&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; SCIBD = 26;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set baud rate to 19200= 8MHz/(16*(SCIBD))&lt;BR /&gt;&amp;nbsp; SCIC2 =0b00001100;&amp;nbsp; //enable receive and transmit&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;/* simple software delay */&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;void delay (unsigned int long value){&lt;BR /&gt;&amp;nbsp; for (;value&amp;gt;0;value--)__RESET_WATCHDOG();&lt;BR /&gt;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;/*MCU setup*/&lt;/P&gt;&lt;P&gt;void MCU_init (void){&lt;BR /&gt;&amp;nbsp;ICSTRM&amp;nbsp; =&amp;nbsp; trimvalue;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set to calcuated trim value&lt;BR /&gt;&amp;nbsp;PTCDD = 0b00000011;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // make PTC0,1 output for leds&lt;BR /&gt;&amp;nbsp;SPMSC1_BGBE =1;&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; //enable bandgap buffer.&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/*IIC setup*/&lt;BR /&gt;&amp;nbsp; void IIC_init(void){&lt;BR /&gt;&amp;nbsp; IICC1_IICEN = 1;&amp;nbsp; //disable module IIC module&lt;BR /&gt;&amp;nbsp; IICF_MULT= 0x10;&amp;nbsp; //divide by 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01&lt;BR /&gt;&amp;nbsp; IICF_ICR=&amp;nbsp; 0x00;&amp;nbsp; //divide by 40;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 07&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR /&gt;/*master send function call*/&amp;nbsp;&lt;BR /&gt;&amp;nbsp; void master_send (void){&lt;BR /&gt;&amp;nbsp; IICC1= 0b10111000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //iic enable, no iterrupt,master,transmit,ack on,)&lt;BR /&gt;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;/*master receive function call*/&lt;BR /&gt;&amp;nbsp; void master_receive (void){&lt;BR /&gt;&amp;nbsp; IICC1= 0b10101000;&lt;BR /&gt;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;/*iic disable*/&lt;BR /&gt;void iic_disable(void){&lt;BR /&gt;&amp;nbsp; IICC1_IICEN = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //disable iic module&lt;BR /&gt;&amp;nbsp; IICD=0;&lt;BR /&gt;&amp;nbsp; return;&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; //write zeros to iic data register.&lt;BR /&gt;}&lt;BR /&gt;void main(void) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; EnableInterrupts; /* enable interrupts */&lt;BR /&gt;&amp;nbsp; MCU_init();&lt;BR /&gt;&amp;nbsp; SCI_init();&lt;BR /&gt;&amp;nbsp; IIC_init();&lt;BR /&gt;&amp;nbsp; SCID=0x22;&amp;nbsp;&amp;nbsp; // test to check reset (help debug)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;for(;&lt;IMG alt=":smileywink:" class="emoticon emoticon-smileywink" id="smileywink" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif" title="Smiley Wink" /&gt; {&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10000);&amp;nbsp;&amp;nbsp;&amp;nbsp; //allow time for sensor to initiate!&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //-----setup sensor units&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED3=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // to help debug&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; master_send();&amp;nbsp;&amp;nbsp; //configure as master, transmit mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD=(0x20&amp;lt;&amp;lt;1)|0;&amp;nbsp; //send address and write bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!IICS_TCF)__RESET_WATCHDOG(); //wait until transmission finishes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD= cm;&amp;nbsp;&amp;nbsp;&amp;nbsp; //tell sensor to send units in CM&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!IICS_TCF)__RESET_WATCHDOG(); //wait until transmission finishes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay(10);&lt;BR /&gt;&amp;nbsp; if(IICS_RXAK==0){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED4=~LED4;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //to help debug&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICC1_RSTA=1 ;&amp;nbsp;&amp;nbsp; //set restart bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //--------read sensor&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; master_send();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICD=(0x20&amp;lt;&amp;lt;1)|1;&amp;nbsp; //send address and receive bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!IICS_TCF)__RESET_WATCHDOG(); //wait for trans to complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; master_receive();&amp;nbsp;&amp;nbsp;&amp;nbsp; //put in receive mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data1 = IICD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //dummy read&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!IICS_TCF)__RESET_WATCHDOG(); //wait for trans to complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICC_TXAK=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //No ACK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data2 = IICD;&amp;nbsp;&amp;nbsp;&amp;nbsp; // REAL DATA&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IICC1_MST=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //release bus&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iic_disable();&amp;nbsp;&amp;nbsp;&amp;nbsp; //disable iic module all together.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //--------serial transmit&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (SCIS1_TDRE==0){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if not ready to send wait&lt;BR /&gt;&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; __RESET_WATCHDOG();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; SCID=data2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG(); /* feeds the dog */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; } /* loop forever */&lt;BR /&gt;&amp;nbsp; /* please make sure that you never leave main */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will clean things up later on....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Aug 2009 10:08:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/IIC-help-please-MC9S08SH/m-p/205044#M17094</guid>
      <dc:creator>rokzar</dc:creator>
      <dc:date>2009-08-06T10:08:50Z</dc:date>
    </item>
  </channel>
</rss>

