<?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>LPC MicrocontrollersのトピックRe: LPC1769 I2C1 + EEPROM 24LC64 - LPCXpresso LPC1769 Rev.D board</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-I2C1-EEPROM-24LC64-LPCXpresso-LPC1769-Rev-D-board/m-p/599707#M23248</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi there,&lt;BR /&gt;I studied the LPC1769 User Manual (UM 10360), Microchip 24LC64 datasheet and LPCXpresso LPC1769 Rev.D schematic.&lt;BR /&gt;I wrote C code to make a simply transmission with EEPROM memory (write one byte and read one byte).&lt;BR /&gt; &lt;BR /&gt;For write one byte value to the EEPROM memory I send bytes via I2C as follows:&lt;BR /&gt;1. I2C START CONDITION (it is not a byte)&lt;BR /&gt;2. 0xA0 (Control Byte + Write bit: 1010 0000)&lt;BR /&gt;3. 0x00 (Byte Address High Byte - MSB: 0000 0000)&lt;BR /&gt;4. 0x00 (Byte Address Low Byte - LSB: 0000 0000)&lt;BR /&gt;5. 0xAA (Data byte value: 1010 1010)&lt;BR /&gt;6. I2C STOP CONDITION (it is not a byte)&lt;BR /&gt; &lt;BR /&gt;and I get I2C Status Register values after each byte:&lt;BR /&gt;1. 0x08 (START CONDITION has been sent)&lt;BR /&gt;2. 0x18 (Slave Address and Write bit has been sent - Control Byte + Write bit)&lt;BR /&gt;3. 0x28 (Data in I2DAT has been transmitted - Byte Address High Byte - MSB)&lt;BR /&gt;4. 0x28 (Data in I2DAT has been transmitted - Byte Address Low Byte - LSB)&lt;BR /&gt;5. 0x28 (Data in I2DAT has been transmitted - Data byte value)&lt;/P&gt;&lt;P&gt;The oscilloscope screen shows that the signals SDA and SCL and their values in time are proper.&lt;/P&gt;&lt;P&gt;For read one byte value from the EEPROM memory I send bytes via I2C as follows:&lt;BR /&gt;1. I2C START CONDITION (it is not a byte)&lt;BR /&gt;2. 0xA0 (Control Byte + Write bit: 1010 0000)&lt;BR /&gt;3. 0x00 (Byte Address High Byte - MSB: 0000 0000)&lt;BR /&gt;4. 0x00 (Byte Address Low Byte - LSB: 0000 0000)&lt;BR /&gt;5. I2C START CONDITION (it is not a byte)&lt;BR /&gt;5. 0xA1 (Control Byte + Read bit: 1010 0001)&lt;BR /&gt;-- Here I get/read byte from I2DAT register&lt;BR /&gt;6. I2C STOP CONDITION (it is not a byte)&lt;BR /&gt; &lt;BR /&gt;and I get I2C Status Register values after each byte:&lt;BR /&gt;1. 0x08 (START CONDITION has been sent)&lt;BR /&gt;2. 0x18 (Data in I2DAT has been transmitted - Byte Address High Byte - MSB)&lt;BR /&gt;3. 0x28 (Data in I2DAT has been transmitted - Byte Address High Byte - LSB)&lt;BR /&gt;4. 0x08 (START CONDITION has been sent)&lt;BR /&gt;5. 0x40 (Slave Addres and Read bit has been sent - Control Byte + Read bit)&lt;BR /&gt;6. 0x58 (Data byte value has been received)&lt;/P&gt;&lt;P&gt;The oscilloscope screens show that there is some problem with signals SDA and SCL and their values in time are unproper&lt;BR /&gt;and the read data byte value from I2DAT register is 0xFF - one step before I wrote there data byte value 0xAA.&lt;BR /&gt;So something is wrong.&lt;/P&gt;&lt;P&gt;Below I send the oscilloscope screens (first write one byte, second read one byte).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Write data byte value to the EEPROM memory - oscilloscope screen:&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="I2C EEPROM Write byte.jpg"&gt;&lt;IMG alt="I2C EEPROM Write byte.jpg" src="https://community.nxp.com/t5/image/serverpage/image-id/5963i1540A30BE5ADB5DB/image-size/large?v=v2&amp;amp;px=999" title="I2C EEPROM Write byte.jpg" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Read&amp;nbsp;data byte value from&amp;nbsp;the EEPROM memory - oscilloscope screen:&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="I2C EEPROM Read byte.jpg"&gt;&lt;IMG alt="I2C EEPROM Read byte.jpg" src="https://community.nxp.com/t5/image/serverpage/image-id/6018iF6DD0F2DEAEC6ED6/image-size/large?v=v2&amp;amp;px=999" title="I2C EEPROM Read byte.jpg" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Read&amp;nbsp;data byte value from&amp;nbsp;the EEPROM memory - oscilloscope screen and small analyze:&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="I2C EEPROM Read byte - analiza.jpg"&gt;&lt;IMG alt="I2C EEPROM Read byte - analiza.jpg" src="https://community.nxp.com/t5/image/serverpage/image-id/6057i33B4189E17FC6B66/image-size/large?v=v2&amp;amp;px=999" title="I2C EEPROM Read byte - analiza.jpg" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;It seems that LSB memory address byte is lost or something... and then the read sequence is broken.&lt;/P&gt;&lt;P&gt;But the I2C Status Register values reding is proper - wondering thing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below I send my C code:&lt;/P&gt;&lt;PRE class="language-cpp line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;// Header files to internal CMSIS libraries&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#include &lt;SPAN class="string token"&gt;"LPC17xx.h"&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#include &lt;SPAN class="string token"&gt;&amp;lt;cr_section_macros.h&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#include &lt;SPAN class="string token"&gt;&amp;lt;NXP/crp.h&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#include &lt;SPAN class="string token"&gt;"timerbasic.h"&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// Header file for Timers and time delays&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#include &lt;SPAN class="string token"&gt;"uartbasic.h"&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// Header file for UARTs&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_Init_100kHz &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Initialize I2C1 interface&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_StartCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Send START condition&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_StopCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Send STOP condition&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_IRQHandler &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C1 interrupt routine for I2C service routine&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Clear_AllBitsDisableI2C 0x6C &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONCLR -&amp;gt; 0110 1100; clear bits: AAC (Acknowledge), SIC (I2C Interrupt), STAC (Start Flag), I2ENC (I2C Interface Disable)&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Clear_I2CInterrupt 0x08 &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONCLR -&amp;gt; 0000 1000; clear bit: SIC (I2C Interrupt)&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Clear_StartCondition 0x20 &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONCLR -&amp;gt; 0010 0000; clear bit: STAC (Start Flag)&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Set_EnableI2C 0x40 &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONSET -&amp;gt; 0100 0000; set bits: I2EN (I2C Interface Enable )&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Set_StartCondition 0x20 &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONSET -&amp;gt; 0010 0000; set bit: STA (Start Flag)&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Set_StopCondition 0x10 &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONSET -&amp;gt; 0001 0000; set bits: AAC (Assert Acknowledge), STO (Stop Flag)&lt;/SPAN&gt;
__CRP &lt;SPAN class="keyword token"&gt;const&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;int&lt;/SPAN&gt; CRP_WORD &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; CRP_NO_CRP&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// CRP - Code Read Protection&lt;/SPAN&gt;
uint8_t i &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Auxilary variable for counting bytes in the IC21 Interrupt routine&lt;/SPAN&gt;
uint8_t I2C_CountOfDataBytesToWrite &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C count of sent bytes&lt;/SPAN&gt;
uint8_t I2C_CountOfDataBytesToRead &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C count of received bytes&lt;/SPAN&gt;
uint8_t Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;32&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C write data byte table&lt;/SPAN&gt;
uint8_t Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;32&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C read data byte table&lt;/SPAN&gt;
uint8_t ControlByteConstant &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0xA0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C EEPROM constant Control Byte&lt;/SPAN&gt;
uint16_t EEPROM_ByteAddress &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM byte (to write or or read) address&lt;/SPAN&gt;
uint8_t EEPROM_ByteValue &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0xAA&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM byte (to write) address&lt;/SPAN&gt;
uint8_t EEPROM_ControlByte_Write &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM 24LC64 first byte - control byte: with WRITE bit flag&lt;/SPAN&gt;
uint8_t EEPROM_ControlByte_Read &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM 24LC64 first byte - control byte: with READ bit flag&lt;/SPAN&gt;
uint8_t I2C_EEPROM_Address &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Hardware EEPROM I2C address from 0 to 7&lt;/SPAN&gt;
uint8_t I2C_RW_Bit_Write &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Write to the EEPROM memory bit flag&lt;/SPAN&gt;
uint8_t I2C_RW_Bit_Read &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Read from the EEPROM memory bit flag&lt;/SPAN&gt;
uint8_t EEPROM_Write_notRead_Mode &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Settings flag - EEPROM Write or Read data byte value&lt;/SPAN&gt;
uint8_t EEPROM_WriteDoneFlag &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Global flag - EEPROM Write done&lt;/SPAN&gt;
uint8_t EEPROM_ReadDoneFlag &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Global flag - EEPROM Read done&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Main program&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;int&lt;/SPAN&gt; main &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 UART0_Init &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// UART0 init - PC communication via USB-UART converter FTDI FT232RL chip&lt;/SPAN&gt;
 UART0_Bitrate &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;115200&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// UART0 bitrate 115200 bps - PC communication&lt;/SPAN&gt;
 Timer0_Init &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Timer0 init - void, Timer for forced time delays&lt;/SPAN&gt;
 I2C1_Init_100kHz &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Initialize I2C1 interface with 100 kbps bitrate&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Create the I2C EEPROM Control bytes - for write and for read byte value&lt;/SPAN&gt;
 EEPROM_ControlByte_Write &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ControlByteConstant &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C_EEPROM_Address &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x07&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C_RW_Bit_Write&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Create EEPROM Control byte with WRITE bit flag&lt;/SPAN&gt;
 EEPROM_ControlByte_Read &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ControlByteConstant &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C_EEPROM_Address &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x07&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C_RW_Bit_Read &lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Create EEPROM Control byte with READ bit flag&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Creating table with data for I2C transmission - WRITE BYTE INTO EEPROM MEMORY&lt;/SPAN&gt;
 Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; EEPROM_ControlByte_Write&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM Control byte (1010 0000) - for EEPROM write mode&lt;/SPAN&gt;
 Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_ByteAddress &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0xFF00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;8&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM MSB Address value&lt;/SPAN&gt;
 Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_ByteAddress &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00FF&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM LSB Address value&lt;/SPAN&gt;
 Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; EEPROM_ByteValue&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM Data Byte value&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Creating table with data for I2C transmission - READ BYTE FROM EEPROM MEMORY&lt;/SPAN&gt;
 Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; EEPROM_ControlByte_Write&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM Control byte (1010 0000)&lt;/SPAN&gt;
 Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_ByteAddress &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0xFF00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;8&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM MSB Address value&lt;/SPAN&gt;
 Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_ByteAddress &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00FF&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM LSB Address value&lt;/SPAN&gt;
 Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; EEPROM_ControlByte_Read&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM Control byte (1010 0001) - for EEPROM read mode&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM_Write_notRead_Mode = 0x01;&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Send the START CONDITION to I2C1 interface&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// I2C1_StartCondition (); // START condition is send; set bit 5 - I2C1 STA bit to 1; Read and Write register&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// while (EEPROM_WriteDoneFlag != 0x01)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM_WriteDoneFlag = 0x00;&lt;/SPAN&gt;
EEPROM_Write_notRead_Mode &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Send the START CONDITION to I2C1 interface&lt;/SPAN&gt;
 I2C1_StartCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// START condition is send; set bit 5 - I2C1 STA bit to 1; Read and Write register&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_ReadDoneFlag &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 EEPROM_ReadDoneFlag &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//Main "for" loop&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// do nothing here&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// ...&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Initialize I2C1 interface&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_Init_100kHz &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 LPC_SC&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PCONP &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;19&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Turn on power for I2C1&lt;/SPAN&gt;
LPC_PINCON&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PINSEL1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;6&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Set pin P0.19 as SDA1 I2C1&lt;/SPAN&gt;
 LPC_PINCON&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PINSEL1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;7&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Set pin P0.19 as SDA1 I2C1&lt;/SPAN&gt;
 LPC_PINCON&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PINSEL1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;8&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Set pin P0.20 as SCL1 I2C1&lt;/SPAN&gt;
 LPC_PINCON&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PINSEL1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;9&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Set pin P0.20 as SCL1 I2C1&lt;/SPAN&gt;
LPC_SC&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PCLKSEL1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;6&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Turn on clock signal for I2C1; bits 6 i 7&lt;/SPAN&gt;
 LPC_SC&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PCLKSEL1 &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;~&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;7&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Turn on clock signal for I2C1; bits 6 i 7&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;/* values: 00 - PCLK I2C1 = CCLK/4
 * 01 - PCLK I2C1 = CCLK
 * 10 - PCLK I2C1 = CCLK/2
 * 11 - PCLK I2C1 = CCLK/8
 * where: x - MSb (e.g. PCLK_I2C1 it bit 7)
 * x - LSb (e.g. PCLK_I2C1 is bit 6)
 * CCLK - Core CLK = 100 MHz -&amp;gt; PCLK I2C1 = 100 MHz/1 = 100 MHz
 */&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Set 100 kHz I2C1 frequency with 50 % of Duty Cycle&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2SCLH &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;500&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// High register of Duty Cycles number; Read and Write register&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2SCLL &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;500&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Low register of Duty Cycles number; Read and Write register&lt;/SPAN&gt;
LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_AllBitsDisableI2C&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Write Only register - musn't read this register - do not use "|="&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Clear all bits: 2 - (AAC) Assert Acknowledge bit&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// 3 - (SIC) I2C Interrupt bit&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// 4 - bit is reserved (do not write to this bit)&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// 5 - (STAC) Start Flag bit&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// 6 - (I2CENC) I2C Interface Disable bit&lt;/SPAN&gt;
NVIC_EnableIRQ &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C1_IRQn&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Set I2C1 Global Interrupts&lt;/SPAN&gt;
LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONSET &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Set_EnableI2C&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Turn on the I2C1 interface; set bit 6 - I2C1 Enable bit to 1; Read and Write register&lt;/SPAN&gt;
 Timer0_MicroSeconds &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;100&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Time delay - 100 us&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_StartCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONSET &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Set_StartCondition&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// START condition is send; set bit 5 - I2C1 STA bit to 1; Read and Write register&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Write Only register - musn't read this register - do not use "|="&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Clear the I2C Interrupt bit; clear bit 3 - I2C1 SIC;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_StopCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONSET &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Set_StopCondition&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// STOP condition is send; set bit 4 - I2C STO bit to 1; Read and Write register&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_IRQHandler &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Send I2C Status Register value - check and control&lt;/SPAN&gt;
 UART0_SendByte &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2STAT&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;switch&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2STAT&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Transmit START condition&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x08&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Now: A START condition has been transmitted&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Next: Slave Address and Write bit will be transmitted; ACK will be received - &amp;gt; next I2STAT value = 0x18&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_StartCondition&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the STA bit&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the SI bit&lt;/SPAN&gt;
 i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM Write mode - The first byte&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x18&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Now: Slave Address and Write bit (0 value) has been transmitted; ACK has been received&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Next: Data byte will be transmitted; ACK bit will be received - &amp;gt; next I2STAT value = 0x28&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Tab_I2CDataWrite [i];&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the SI bit&lt;/SPAN&gt;
 i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM Write mode - Other bytes&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x28&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Now: Data byte in I2DAT has been transmitted; ACK has been received&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Next: Data byte will be transmitted; ACK bit will be received&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// or: NO I2DAT Action - Repeated START will be transmitted&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// or: NO I2DAT Action - STOP condition will be transmitted; STO flag will be reset&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Tab_I2CDataWrite [i];&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the SI bit&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM Write mode&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_Write_notRead_Mode &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i &lt;SPAN class="operator token"&gt;&amp;gt;=&lt;/SPAN&gt; I2C_CountOfDataBytesToWrite&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; i &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; I2C1_StopCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; EEPROM_WriteDoneFlag &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Send STOP CONDITION when all bytes are sent&lt;/SPAN&gt;
 i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// EEPROM Read mode&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_Write_notRead_Mode &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 I2C1_StartCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM Read mode&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Now: SLA+R has been transmitted; ACK has been received&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Next: Data byte will be received; NOT ACK bit will be returned&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// or: Data byte will be received; ACK bit will be returned&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x40&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the SI bit&lt;/SPAN&gt;
 i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM Read mode&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Data byte has been received; NOT ACK has been returned&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x58&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;
 UART0_SendByte &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Read EEPROM data byte value and send thru UART0&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the SI bit&lt;/SPAN&gt;
 i &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 I2C1_StopCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Transmit STOP condition&lt;/SPAN&gt;
 EEPROM_ReadDoneFlag &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Send global Read Done flag&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Additionaly I send this C code in C file for better reading of C code (than in unformatted lines).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 02 Nov 2020 13:50:29 GMT</pubDate>
    <dc:creator>jakubpapuga-sza</dc:creator>
    <dc:date>2020-11-02T13:50:29Z</dc:date>
    <item>
      <title>LPC1769 I2C1 + EEPROM 24LC64 - LPCXpresso LPC1769 Rev.D board</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-I2C1-EEPROM-24LC64-LPCXpresso-LPC1769-Rev-D-board/m-p/599705#M23246</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I need to use EEPROM memory Microchip 24LC64 (64 kb/8 kB) built-in &amp;nbsp;in LPCXpresso LPC17659 Rev. D PC board for storage some settings data when power is turned off.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This EEPROM memory is connected to the I2C number 1 (I2C1) of the LPC1769 microcontroller on the LPCXpresso Rev. D PC board. Memory is not Write Protected (WP pin is connected to the GND) and the EEPROM device address is 0 (binary 000 - pins A2, A1 and A0 are connected to the GND).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wrote some start C code to run I2C1 interface but there is no response from the EEPROM memory.&lt;/P&gt;&lt;P&gt;I read the I2STAT of I2C1 interface and it gave me 0xF8 value - it means some miscellaneous state: no revelant information is available because the serial interrupt flag, SI, is not yet set.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I connected oscilloscopes' probes to theEEPROM pins SCL and SDA and I run my simpy C code but thereare no changes on the lines - all the time both are in high level.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below I send my simply C code for I2C1:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;void I2C1_Init_100kHz (void)&lt;BR /&gt;{&lt;BR /&gt; LPC_SC-&amp;gt;PCONP |= (1&amp;lt;&amp;lt;19); // Turn on power for I2C1&lt;/P&gt;&lt;P&gt;LPC_PINCON-&amp;gt;PINSEL1 |= (1&amp;lt;&amp;lt;6); // Set pin P0.19 as SDA1 I2C1&lt;BR /&gt; LPC_PINCON-&amp;gt;PINSEL1 |= (1&amp;lt;&amp;lt;7); // Set pin P0.19 as SDA1 I2C1&lt;BR /&gt; LPC_PINCON-&amp;gt;PINSEL1 |= (1&amp;lt;&amp;lt;8); // Set pin P0.20 as SCL1 I2C1&lt;BR /&gt; LPC_PINCON-&amp;gt;PINSEL1 |= (1&amp;lt;&amp;lt;9); // Set pin P0.20 as SCL1 I2C1&lt;/P&gt;&lt;P&gt;LPC_SC-&amp;gt;PCLKSEL1 |= (1&amp;lt;&amp;lt;6); // Turn on clock signal for I2C1; bits 6 i 7&lt;BR /&gt; LPC_SC-&amp;gt;PCLKSEL1 &amp;amp;=~(1&amp;lt;&amp;lt;7); // Turn on clock signal for I2C1; bits 6 i 7&lt;BR /&gt; /* values: 00 - PCLK I2C1 = CCLK/4&lt;BR /&gt; * 01 - PCLK I2C1 = CCLK&lt;BR /&gt; * 10 - PCLK I2C1 = CCLK/2&lt;BR /&gt; * 11 - PCLK I2C1 = CCLK/8&lt;BR /&gt; * where: x - MSb (e.g. PCLK_I2C1 it bit 7)&lt;BR /&gt; * x - LSb (e.g. PCLK_I2C1 is bit 6)&lt;BR /&gt; * CCLK - Core CLK = 100 MHz -&amp;gt; PCLK I2C1 = 100 MHz/1 = 100 MHz&lt;BR /&gt; */&lt;/P&gt;&lt;P&gt;// Set 100 kHz I2C1 frequency with 50 % of Duty Cycle&lt;BR /&gt; LPC_I2C1-&amp;gt;I2SCLH = 500; // High register of Duty Cycles number&lt;BR /&gt; LPC_I2C1-&amp;gt;I2SCLL = 500; // Low register of Duty Cycles number&lt;/P&gt;&lt;P&gt;LPC_I2C1-&amp;gt;I2CONCLR |= ( (1&amp;lt;&amp;lt;2) | (1&amp;lt;&amp;lt;5) | (1&amp;lt;&amp;lt;6) ); // Clear all bits: 2 - (AAC) Assert Acknowledge bit&lt;BR /&gt; // 3 - (SIC) I2C Interrupt bit&lt;BR /&gt; // 4 - bit is reserved (do not write to this bit)&lt;BR /&gt; // 5 - (STAC) Start Flag bit&lt;BR /&gt; // 6 - (I2CENC) I2C Interface Disable bit&lt;/P&gt;&lt;P&gt;// Do a dummy byte transmit - just for test the I2C1 signals (SCL1 and SDA1) with oscilloscope&lt;BR /&gt; LPC_I2C1-&amp;gt;I2CONSET |= (1&amp;lt;&amp;lt;6); // Turn on the I2C1 interface; set bit 6 - I2C1 Enable bit to 1&lt;BR /&gt; Timer0_MicroSeconds (10000); // Time delay - 100 us&lt;/P&gt;&lt;P&gt;LPC_I2C1-&amp;gt;I2CONSET |= (1&amp;lt;&amp;lt;5); // START condition is send; set bit 5 - I2C1 STA bit to 1&lt;BR /&gt; LPC_I2C1-&amp;gt;I2CONCLR |= (1&amp;lt;&amp;lt;3); // Clear the I2C Interrupt bit; clear bit 3 - I2C1 SIC&lt;/P&gt;&lt;P&gt;LPC_I2C1-&amp;gt;I2DAT = 0xA0; // Send control byte: 0xA0 = 1010 0000 =&amp;gt; 1010 - Control Code&lt;BR /&gt; // 000 - Chip Select bits (Device Address)&lt;BR /&gt; // 0 - Read or notWrite (1: Read; 0: Write)&lt;BR /&gt; // Wait for complete data sending&lt;BR /&gt; while ( !( LPC_I2C0-&amp;gt;I2CONSET &amp;amp; (1&amp;lt;&amp;lt;3) ) );&lt;BR /&gt; LPC_I2C0-&amp;gt;I2CONCLR |= (1&amp;lt;&amp;lt;5); // Clear the STAC bit - clear START condition bit&lt;BR /&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Do you have any idea what is wrong with my code?&lt;/P&gt;&lt;P&gt;I will be very helpful for help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Oct 2016 09:11:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-I2C1-EEPROM-24LC64-LPCXpresso-LPC1769-Rev-D-board/m-p/599705#M23246</guid>
      <dc:creator>jakubpapuga-sza</dc:creator>
      <dc:date>2016-10-03T09:11:59Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 I2C1 + EEPROM 24LC64 - LPCXpresso LPC1769 Rev.D board</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-I2C1-EEPROM-24LC64-LPCXpresso-LPC1769-Rev-D-board/m-p/599706#M23247</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please check the below thread and let me know if this helps,&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://www.lpcware.com/content/forum/onboard-i2c-24lc64-eeprom-on-lpcxpresso1769" title="https://www.lpcware.com/content/forum/onboard-i2c-24lc64-eeprom-on-lpcxpresso1769"&gt;Onboard I2C 24LC64 EEPROM on LPCXpresso1769 | www.LPCware.com&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt; Sol&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Oct 2016 21:21:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-I2C1-EEPROM-24LC64-LPCXpresso-LPC1769-Rev-D-board/m-p/599706#M23247</guid>
      <dc:creator>soledad</dc:creator>
      <dc:date>2016-10-07T21:21:48Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 I2C1 + EEPROM 24LC64 - LPCXpresso LPC1769 Rev.D board</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-I2C1-EEPROM-24LC64-LPCXpresso-LPC1769-Rev-D-board/m-p/599707#M23248</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi there,&lt;BR /&gt;I studied the LPC1769 User Manual (UM 10360), Microchip 24LC64 datasheet and LPCXpresso LPC1769 Rev.D schematic.&lt;BR /&gt;I wrote C code to make a simply transmission with EEPROM memory (write one byte and read one byte).&lt;BR /&gt; &lt;BR /&gt;For write one byte value to the EEPROM memory I send bytes via I2C as follows:&lt;BR /&gt;1. I2C START CONDITION (it is not a byte)&lt;BR /&gt;2. 0xA0 (Control Byte + Write bit: 1010 0000)&lt;BR /&gt;3. 0x00 (Byte Address High Byte - MSB: 0000 0000)&lt;BR /&gt;4. 0x00 (Byte Address Low Byte - LSB: 0000 0000)&lt;BR /&gt;5. 0xAA (Data byte value: 1010 1010)&lt;BR /&gt;6. I2C STOP CONDITION (it is not a byte)&lt;BR /&gt; &lt;BR /&gt;and I get I2C Status Register values after each byte:&lt;BR /&gt;1. 0x08 (START CONDITION has been sent)&lt;BR /&gt;2. 0x18 (Slave Address and Write bit has been sent - Control Byte + Write bit)&lt;BR /&gt;3. 0x28 (Data in I2DAT has been transmitted - Byte Address High Byte - MSB)&lt;BR /&gt;4. 0x28 (Data in I2DAT has been transmitted - Byte Address Low Byte - LSB)&lt;BR /&gt;5. 0x28 (Data in I2DAT has been transmitted - Data byte value)&lt;/P&gt;&lt;P&gt;The oscilloscope screen shows that the signals SDA and SCL and their values in time are proper.&lt;/P&gt;&lt;P&gt;For read one byte value from the EEPROM memory I send bytes via I2C as follows:&lt;BR /&gt;1. I2C START CONDITION (it is not a byte)&lt;BR /&gt;2. 0xA0 (Control Byte + Write bit: 1010 0000)&lt;BR /&gt;3. 0x00 (Byte Address High Byte - MSB: 0000 0000)&lt;BR /&gt;4. 0x00 (Byte Address Low Byte - LSB: 0000 0000)&lt;BR /&gt;5. I2C START CONDITION (it is not a byte)&lt;BR /&gt;5. 0xA1 (Control Byte + Read bit: 1010 0001)&lt;BR /&gt;-- Here I get/read byte from I2DAT register&lt;BR /&gt;6. I2C STOP CONDITION (it is not a byte)&lt;BR /&gt; &lt;BR /&gt;and I get I2C Status Register values after each byte:&lt;BR /&gt;1. 0x08 (START CONDITION has been sent)&lt;BR /&gt;2. 0x18 (Data in I2DAT has been transmitted - Byte Address High Byte - MSB)&lt;BR /&gt;3. 0x28 (Data in I2DAT has been transmitted - Byte Address High Byte - LSB)&lt;BR /&gt;4. 0x08 (START CONDITION has been sent)&lt;BR /&gt;5. 0x40 (Slave Addres and Read bit has been sent - Control Byte + Read bit)&lt;BR /&gt;6. 0x58 (Data byte value has been received)&lt;/P&gt;&lt;P&gt;The oscilloscope screens show that there is some problem with signals SDA and SCL and their values in time are unproper&lt;BR /&gt;and the read data byte value from I2DAT register is 0xFF - one step before I wrote there data byte value 0xAA.&lt;BR /&gt;So something is wrong.&lt;/P&gt;&lt;P&gt;Below I send the oscilloscope screens (first write one byte, second read one byte).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Write data byte value to the EEPROM memory - oscilloscope screen:&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="I2C EEPROM Write byte.jpg"&gt;&lt;IMG alt="I2C EEPROM Write byte.jpg" src="https://community.nxp.com/t5/image/serverpage/image-id/5963i1540A30BE5ADB5DB/image-size/large?v=v2&amp;amp;px=999" title="I2C EEPROM Write byte.jpg" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Read&amp;nbsp;data byte value from&amp;nbsp;the EEPROM memory - oscilloscope screen:&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="I2C EEPROM Read byte.jpg"&gt;&lt;IMG alt="I2C EEPROM Read byte.jpg" src="https://community.nxp.com/t5/image/serverpage/image-id/6018iF6DD0F2DEAEC6ED6/image-size/large?v=v2&amp;amp;px=999" title="I2C EEPROM Read byte.jpg" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Read&amp;nbsp;data byte value from&amp;nbsp;the EEPROM memory - oscilloscope screen and small analyze:&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="I2C EEPROM Read byte - analiza.jpg"&gt;&lt;IMG alt="I2C EEPROM Read byte - analiza.jpg" src="https://community.nxp.com/t5/image/serverpage/image-id/6057i33B4189E17FC6B66/image-size/large?v=v2&amp;amp;px=999" title="I2C EEPROM Read byte - analiza.jpg" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;It seems that LSB memory address byte is lost or something... and then the read sequence is broken.&lt;/P&gt;&lt;P&gt;But the I2C Status Register values reding is proper - wondering thing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below I send my C code:&lt;/P&gt;&lt;PRE class="language-cpp line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;// Header files to internal CMSIS libraries&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#include &lt;SPAN class="string token"&gt;"LPC17xx.h"&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#include &lt;SPAN class="string token"&gt;&amp;lt;cr_section_macros.h&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#include &lt;SPAN class="string token"&gt;&amp;lt;NXP/crp.h&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#include &lt;SPAN class="string token"&gt;"timerbasic.h"&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// Header file for Timers and time delays&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#include &lt;SPAN class="string token"&gt;"uartbasic.h"&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// Header file for UARTs&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_Init_100kHz &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Initialize I2C1 interface&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_StartCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Send START condition&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_StopCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Send STOP condition&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_IRQHandler &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C1 interrupt routine for I2C service routine&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Clear_AllBitsDisableI2C 0x6C &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONCLR -&amp;gt; 0110 1100; clear bits: AAC (Acknowledge), SIC (I2C Interrupt), STAC (Start Flag), I2ENC (I2C Interface Disable)&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Clear_I2CInterrupt 0x08 &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONCLR -&amp;gt; 0000 1000; clear bit: SIC (I2C Interrupt)&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Clear_StartCondition 0x20 &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONCLR -&amp;gt; 0010 0000; clear bit: STAC (Start Flag)&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Set_EnableI2C 0x40 &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONSET -&amp;gt; 0100 0000; set bits: I2EN (I2C Interface Enable )&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Set_StartCondition 0x20 &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONSET -&amp;gt; 0010 0000; set bit: STA (Start Flag)&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#define I2C_Set_StopCondition 0x10 &lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// LPC_I2C1-&amp;gt;I2CONSET -&amp;gt; 0001 0000; set bits: AAC (Assert Acknowledge), STO (Stop Flag)&lt;/SPAN&gt;
__CRP &lt;SPAN class="keyword token"&gt;const&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;int&lt;/SPAN&gt; CRP_WORD &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; CRP_NO_CRP&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// CRP - Code Read Protection&lt;/SPAN&gt;
uint8_t i &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Auxilary variable for counting bytes in the IC21 Interrupt routine&lt;/SPAN&gt;
uint8_t I2C_CountOfDataBytesToWrite &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C count of sent bytes&lt;/SPAN&gt;
uint8_t I2C_CountOfDataBytesToRead &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C count of received bytes&lt;/SPAN&gt;
uint8_t Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;32&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C write data byte table&lt;/SPAN&gt;
uint8_t Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;32&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C read data byte table&lt;/SPAN&gt;
uint8_t ControlByteConstant &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0xA0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// I2C EEPROM constant Control Byte&lt;/SPAN&gt;
uint16_t EEPROM_ByteAddress &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM byte (to write or or read) address&lt;/SPAN&gt;
uint8_t EEPROM_ByteValue &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0xAA&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM byte (to write) address&lt;/SPAN&gt;
uint8_t EEPROM_ControlByte_Write &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM 24LC64 first byte - control byte: with WRITE bit flag&lt;/SPAN&gt;
uint8_t EEPROM_ControlByte_Read &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM 24LC64 first byte - control byte: with READ bit flag&lt;/SPAN&gt;
uint8_t I2C_EEPROM_Address &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Hardware EEPROM I2C address from 0 to 7&lt;/SPAN&gt;
uint8_t I2C_RW_Bit_Write &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Write to the EEPROM memory bit flag&lt;/SPAN&gt;
uint8_t I2C_RW_Bit_Read &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Read from the EEPROM memory bit flag&lt;/SPAN&gt;
uint8_t EEPROM_Write_notRead_Mode &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Settings flag - EEPROM Write or Read data byte value&lt;/SPAN&gt;
uint8_t EEPROM_WriteDoneFlag &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Global flag - EEPROM Write done&lt;/SPAN&gt;
uint8_t EEPROM_ReadDoneFlag &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Global flag - EEPROM Read done&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Main program&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;int&lt;/SPAN&gt; main &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 UART0_Init &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// UART0 init - PC communication via USB-UART converter FTDI FT232RL chip&lt;/SPAN&gt;
 UART0_Bitrate &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;115200&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// UART0 bitrate 115200 bps - PC communication&lt;/SPAN&gt;
 Timer0_Init &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Timer0 init - void, Timer for forced time delays&lt;/SPAN&gt;
 I2C1_Init_100kHz &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Initialize I2C1 interface with 100 kbps bitrate&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Create the I2C EEPROM Control bytes - for write and for read byte value&lt;/SPAN&gt;
 EEPROM_ControlByte_Write &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ControlByteConstant &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C_EEPROM_Address &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x07&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C_RW_Bit_Write&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Create EEPROM Control byte with WRITE bit flag&lt;/SPAN&gt;
 EEPROM_ControlByte_Read &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ControlByteConstant &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C_EEPROM_Address &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x07&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C_RW_Bit_Read &lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Create EEPROM Control byte with READ bit flag&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Creating table with data for I2C transmission - WRITE BYTE INTO EEPROM MEMORY&lt;/SPAN&gt;
 Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; EEPROM_ControlByte_Write&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM Control byte (1010 0000) - for EEPROM write mode&lt;/SPAN&gt;
 Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_ByteAddress &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0xFF00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;8&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM MSB Address value&lt;/SPAN&gt;
 Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_ByteAddress &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00FF&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM LSB Address value&lt;/SPAN&gt;
 Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; EEPROM_ByteValue&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM Data Byte value&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Creating table with data for I2C transmission - READ BYTE FROM EEPROM MEMORY&lt;/SPAN&gt;
 Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; EEPROM_ControlByte_Write&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM Control byte (1010 0000)&lt;/SPAN&gt;
 Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_ByteAddress &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0xFF00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;8&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM MSB Address value&lt;/SPAN&gt;
 Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_ByteAddress &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00FF&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM LSB Address value&lt;/SPAN&gt;
 Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; EEPROM_ControlByte_Read&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// EEPROM Control byte (1010 0001) - for EEPROM read mode&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM_Write_notRead_Mode = 0x01;&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Send the START CONDITION to I2C1 interface&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// I2C1_StartCondition (); // START condition is send; set bit 5 - I2C1 STA bit to 1; Read and Write register&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// while (EEPROM_WriteDoneFlag != 0x01)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM_WriteDoneFlag = 0x00;&lt;/SPAN&gt;
EEPROM_Write_notRead_Mode &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Send the START CONDITION to I2C1 interface&lt;/SPAN&gt;
 I2C1_StartCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// START condition is send; set bit 5 - I2C1 STA bit to 1; Read and Write register&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_ReadDoneFlag &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 EEPROM_ReadDoneFlag &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//Main "for" loop&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// do nothing here&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// ...&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Initialize I2C1 interface&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_Init_100kHz &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 LPC_SC&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PCONP &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;19&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Turn on power for I2C1&lt;/SPAN&gt;
LPC_PINCON&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PINSEL1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;6&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Set pin P0.19 as SDA1 I2C1&lt;/SPAN&gt;
 LPC_PINCON&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PINSEL1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;7&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Set pin P0.19 as SDA1 I2C1&lt;/SPAN&gt;
 LPC_PINCON&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PINSEL1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;8&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Set pin P0.20 as SCL1 I2C1&lt;/SPAN&gt;
 LPC_PINCON&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PINSEL1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;9&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Set pin P0.20 as SCL1 I2C1&lt;/SPAN&gt;
LPC_SC&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PCLKSEL1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;6&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Turn on clock signal for I2C1; bits 6 i 7&lt;/SPAN&gt;
 LPC_SC&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;PCLKSEL1 &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;~&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;7&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Turn on clock signal for I2C1; bits 6 i 7&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;/* values: 00 - PCLK I2C1 = CCLK/4
 * 01 - PCLK I2C1 = CCLK
 * 10 - PCLK I2C1 = CCLK/2
 * 11 - PCLK I2C1 = CCLK/8
 * where: x - MSb (e.g. PCLK_I2C1 it bit 7)
 * x - LSb (e.g. PCLK_I2C1 is bit 6)
 * CCLK - Core CLK = 100 MHz -&amp;gt; PCLK I2C1 = 100 MHz/1 = 100 MHz
 */&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// Set 100 kHz I2C1 frequency with 50 % of Duty Cycle&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2SCLH &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;500&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// High register of Duty Cycles number; Read and Write register&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2SCLL &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;500&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Low register of Duty Cycles number; Read and Write register&lt;/SPAN&gt;
LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_AllBitsDisableI2C&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Write Only register - musn't read this register - do not use "|="&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Clear all bits: 2 - (AAC) Assert Acknowledge bit&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// 3 - (SIC) I2C Interrupt bit&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// 4 - bit is reserved (do not write to this bit)&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// 5 - (STAC) Start Flag bit&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// 6 - (I2CENC) I2C Interface Disable bit&lt;/SPAN&gt;
NVIC_EnableIRQ &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;I2C1_IRQn&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Set I2C1 Global Interrupts&lt;/SPAN&gt;
LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONSET &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Set_EnableI2C&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Turn on the I2C1 interface; set bit 6 - I2C1 Enable bit to 1; Read and Write register&lt;/SPAN&gt;
 Timer0_MicroSeconds &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;100&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Time delay - 100 us&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_StartCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONSET &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Set_StartCondition&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// START condition is send; set bit 5 - I2C1 STA bit to 1; Read and Write register&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Write Only register - musn't read this register - do not use "|="&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Clear the I2C Interrupt bit; clear bit 3 - I2C1 SIC;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_StopCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONSET &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Set_StopCondition&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// STOP condition is send; set bit 4 - I2C STO bit to 1; Read and Write register&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; I2C1_IRQHandler &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Send I2C Status Register value - check and control&lt;/SPAN&gt;
 UART0_SendByte &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2STAT&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;switch&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2STAT&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Transmit START condition&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x08&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Now: A START condition has been transmitted&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Next: Slave Address and Write bit will be transmitted; ACK will be received - &amp;gt; next I2STAT value = 0x18&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Tab_I2CDataWrite &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_StartCondition&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the STA bit&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the SI bit&lt;/SPAN&gt;
 i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM Write mode - The first byte&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x18&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Now: Slave Address and Write bit (0 value) has been transmitted; ACK has been received&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Next: Data byte will be transmitted; ACK bit will be received - &amp;gt; next I2STAT value = 0x28&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Tab_I2CDataWrite [i];&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the SI bit&lt;/SPAN&gt;
 i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM Write mode - Other bytes&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x28&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Now: Data byte in I2DAT has been transmitted; ACK has been received&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Next: Data byte will be transmitted; ACK bit will be received&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// or: NO I2DAT Action - Repeated START will be transmitted&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// or: NO I2DAT Action - STOP condition will be transmitted; STO flag will be reset&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Tab_I2CDataWrite [i];&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the SI bit&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM Write mode&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_Write_notRead_Mode &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i &lt;SPAN class="operator token"&gt;&amp;gt;=&lt;/SPAN&gt; I2C_CountOfDataBytesToWrite&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; i &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; I2C1_StopCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; EEPROM_WriteDoneFlag &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Send STOP CONDITION when all bytes are sent&lt;/SPAN&gt;
 i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// EEPROM Read mode&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;EEPROM_Write_notRead_Mode &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 I2C1_StartCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM Read mode&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Now: SLA+R has been transmitted; ACK has been received&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Next: Data byte will be received; NOT ACK bit will be returned&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// or: Data byte will be received; ACK bit will be returned&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x40&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Tab_I2CDataRead &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the SI bit&lt;/SPAN&gt;
 i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// EEPROM Read mode&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Data byte has been received; NOT ACK has been returned&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x58&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;
 UART0_SendByte &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2DAT&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Read EEPROM data byte value and send thru UART0&lt;/SPAN&gt;
 LPC_I2C1&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;I2CONCLR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; I2C_Clear_I2CInterrupt&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Reset the SI bit&lt;/SPAN&gt;
 i &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 I2C1_StopCondition &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Transmit STOP condition&lt;/SPAN&gt;
 EEPROM_ReadDoneFlag &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Send global Read Done flag&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Additionaly I send this C code in C file for better reading of C code (than in unformatted lines).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2020 13:50:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-I2C1-EEPROM-24LC64-LPCXpresso-LPC1769-Rev-D-board/m-p/599707#M23248</guid>
      <dc:creator>jakubpapuga-sza</dc:creator>
      <dc:date>2020-11-02T13:50:29Z</dc:date>
    </item>
  </channel>
</rss>

