I²C communication on the LPC810 (without using the ROM API)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

I²C communication on the LPC810 (without using the ROM API)

824 Views
LPC81x1114
Contributor I

I wish to establish I²C communication with NXP's LM75A temperature sensor using an LPC810 microcontroller for educational purposes, without utilising the ROM API.

I have managed to send I²C commands unilaterally and display text on an LCD, for instance, but I am unsure how to write code for communicating with a slave device like the LM75A, which requires read operations. I have attached my current source code below; at present, I cannot read the temperature from the LM75A.
■ Overview
・I/O ports assigned for I2C functionality
・Communication via polling, without interrupts

■ Main Queries
When wishing to return an ACK signal in master receive mode, it appears the LPC810 lacks such a register (only registers for the three conditions: START, CONTINUE, STOP). Can this be read using the attached code? If possible, I would appreciate a concrete example of source code.

 

#ifdef __USE_CMSIS

#include "LPC8xx.h"

#endif

 

#include <cr_section_macros.h>

#include "romI2C.h" //本コードはROMAPIを使用してないので、I2Cの定数定義部分のみ

#include "I2C_DEFINE.h"

 

 

#define LM75AAddr (0x48) //温度センサ アドレス

#define I2C_RW_W (0x00) //RW(LSB)はLCDは常に0

 

#define LM75TempRegi_pointer (0x00) //Tempレジスタポイタ

//Command:RS=0,Data:RS=1

#define LM75ConfRegi_pointer (0x01) //Configuration registerポインタ

 

 

int waiting=0;

 

void SwitchMatrix_Init();

void IOCON_Init();

void I2C_Init();

 

//void I2C_one_Byte_Write(uint8_t data);

void I2C_Multiple_Write(uint8_t Addr,uint8_t WriteByte,uint8_t *i2c_data);

void Systick_Init();

void I2C_Addr_WSend(uint8_t Addr);

void I2C_Addr_RSend(uint8_t Addr);

void Temp_SenceInit();

uint8_t I2C_Multiple_Read(uint8_t Addr,uint8_t ReadByte);

uint16_t ReadTemperture_LM75A(uint8_t Addr);

void mon_CFG(); //I2Cデータモニタ用関数

//void I2C_Stop();

 

//Systick

void SysTick_Handler(){

waiting=0;

}

 

 

static void wait_ms(uint32_t ms){

waiting=1;

SysTick_Config(SystemCoreClock/1000*ms);

while(waiting);

}

 

 

 

int main(void) {

int LED_C;

uint16_t temp=0;

LPC_GPIO_PORT->DIR0 |=(1<<1);

SystemCoreClockUpdate();

// Enter an infinite loop, just incrementing a counter

IOCON_Init();

SwitchMatrix_Init();

 

while(1){

temp=ReadTemperture_LM75A(LM75AAddr);

}

return 0 ;

}//main

 

 

void I2C_Init(){

LPC_SYSCON->PRESETCTRL &= ~(0x1<<6); //Assert Reset

LPC_SYSCON->PRESETCTRL |= (0x1<<6); //Clear Resett

//Set i2c clock DIV

LPC_I2C->DIV = 0x0001; //PCLK I2C Clock 

LPC_I2C->MSTTIME=0; //Mater SCL Low Timee

 

LPC_I2C->CFG = I2C_CFG_MSTEN | 0x04; //マスターモード モニタイネーブル クロックストレッチ

}

 

void Temp_SenceInit(){ //温度センサ初期設定

uint8_t Config[3]={LM75AAddr,LM75ConfRegi_pointer,0x00}; //

 

I2C_Multiple_Write(LM75AAddr, 3, Config);

}

 

void I2C_Addr_WSend(uint8_t Addr){

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_IDLE);

LPC_I2C->MSTDAT = (Addr<<1|0); // address and 0 for RWn bit

LPC_I2C->MSTCTL = I2C_MSTCTL_MSTSTART; // send start

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_TX);

}

 

void I2C_Addr_RSend(uint8_t Addr){

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_IDLE);

LPC_I2C->MSTDAT = (Addr<<1)|1; // address and 0 for RWn bit

LPC_I2C->MSTCTL = I2C_MSTCTL_MSTSTART; // send start

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_RX);

 

}

 

void I2C_Multiple_Write(uint8_t Addr,uint8_t WriteByte,uint8_t *i2c_data){

//LPC_I2C->CFG = I2C_CFG_MSTEN; //マスターモード

I2C_Addr_WSend(Addr);

for (int i = 1; i < WriteByte; ++i){

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_IDLE);//

LPC_I2C->MSTDAT = *(i2c_data+i); // send data

wait_ms(100); //wait

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

LPC_I2C->MSTCTL = I2C_MSTCTL_MSTCONTINUE; // continue transaction

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_TX); //break(); //abort();

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_IDLE); //break();*/

 

}

LPC_I2C->MSTCTL = I2C_MSTCTL_MSTSTOP; //

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

//if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_IDLE);

}

 

 

//温度センサからの温度データ読みだし

uint16_t ReadTemperture_LM75A(uint8_t Addr){ //

 

uint8_t Readdata_MSB;

uint8_t Readdata_LSB;

uint16_t Readdata;

//I2C_Addr_RSend(Addr); //read

I2C_Addr_WSend(Addr); //write

 

LPC_I2C->MSTDAT = LM75TempRegi_pointer;

//LPC_I2C->MSTCTL = I2C_MSTCTL_MSTSTART; //RE-START

LPC_I2C->MSTCTL = I2C_MSTCTL_MSTCONTINUE; //

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_TX);

LPC_I2C->MSTDAT = (Addr<<1)|1; //読みだし

LPC_I2C->MSTCTL = I2C_MSTCTL_MSTSTART; //RE=START

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

Readdata_MSB=LPC_I2C->MSTDAT;

LPC_I2C->MSTCTL = I2C_MSTCTL_MSTCONTINUE;

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

Readdata_LSB=LPC_I2C->MSTDAT;

 

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_RX);

 

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

LPC_I2C->MSTCTL = I2C_MSTCTL_MSTSTOP; // send stop NACKのスレーブへの送信

while(!(LPC_I2C->STAT & I2C_STAT_MSTPENDING));

if((LPC_I2C->STAT & I2C_STAT_MSTSTATE) != I2C_STAT_MSTST_IDLE) ;

 

 

Readdata=Readdata_MSB<<8|Readdata_LSB;

return Readdata;

}

 

void SwitchMatrix_Init()

{

/* Enable SWM clock */

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7|1<<5); //Enable SWM Clock,I2C Clock

 

LPC_SWM->PINASSIGN7 = 0x00ffffffUL; //SDA

/* I2C0_SCL */

LPC_SWM->PINASSIGN8 = 0xffffff04UL; //SCL

 

 

LPC_SWM->PINENABLE0 = 0xffffffb3UL;

 

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<18); //Enables clock for IOCON block.

 

}

 

void IOCON_Init() {

 

/* Enable UART clock */

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<18);

 

}

 

void Systick_Init(){

 

SysTick->CTRL=0; //Systick_Countter stop

SysTick->LOAD=12000; //1ms

SysTick->VAL=0; //

SysTick->CTRL=0x07; //Systick 

}

 

void mon_CFG(){

 

uint32_t mondata;

mondata=LPC_I2C->MONRXDAT;

}

 

 

 

0 Kudos
Reply
3 Replies

741 Views
LPC81x1114
Contributor I

Habib_MS,

Thank you for your message.
I wrote a program using Chapter 29.2 “Code Example I2C” as a reference, but it isn't working properly.
Currently, I cannot visualize how the LPC810 operates when controlling as a master using hardware I2C.
I believe the code example lists three constants to set in LPC_I2C->MSTCTL: I2C_MSTCTL_MSTSTART, I2C_MSTCTL_MSTCONTINUE, and I2C_MSTCTL_MSTSTOP.
I2C_MSTCTL_MSTSTART handles the start condition and restart condition, and also...
I2C_MSTCTL_MSTSTOP is for the stop condition,
but could you please explain how I2C_MSTCTL_MSTCONTINUE behaves in both master transmit mode and master receive mode?

Translated with DeepL.com (free version)

0 Kudos
Reply

722 Views
Habib_MS
NXP Employee
NXP Employee

Hello @LPC81x1114,
Of course.
The macro I2C_MSTCTL_MSTCONTINUE is defined with a value of 1, as shown in Chapter 29.2.1 "Definitions". It is used in the MSTCTL register, which writes a 1 to the MSTCONTINUE bit. This bit performs the following function:

Habib_MS_0-1759962768950.png

In simplified terms, this bit tells the LPC controller that it can proceed with the next operation in the I2C protocol. For example, if a transmission has already started and an ACK has been received, the next step might be to send a data byte to the slave. This is when the MSTCONTINUE bit is activated.
That is why, in the example "Master writes one byte to slave", the bit is set after receiving an ACK and before sending the data byte.

Habib_MS_1-1759962808651.png

BR
Habib

0 Kudos
Reply

762 Views
Habib_MS
NXP Employee
NXP Employee

Hello @LPC81x1114,

I highly recommend reviewing Section 7.10: "Protocols for Writing and Reading the Registers" in the LM75A datasheet. This section explains how the I2C communication frames should be structured to perform various actions with the sensor. For example, it includes the frame format required to write to the configuration register:

Habib_MS_1-1759787216901.png

Additionally, there are other useful frame formats mentioned that can help you better understand the communication process. This section also highlights key aspects of I2C communication.
I also suggest checking out Section 7.3: "Slave Address", which explains how to configure the sensor's slave address.
On another note, the RM provides several example codes that directly access I2C registers without using the ROM API. These examples can serve as a helpful reference and are located in the chapter 29.2 called "Code Examples I2C".
Hope this helps.
BR
Habib

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2178553%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EI%C2%B2C%20communication%20on%20the%20LPC810%20(without%20using%20the%20ROM%20API)%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2178553%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20wish%20to%20establish%20I%C2%B2C%20communication%20with%20NXP's%20LM75A%20temperature%20sensor%20using%20an%20LPC810%20microcontroller%20for%20educational%20purposes%2C%20without%20utilising%20the%20ROM%20API.%3C%2FP%3E%3CP%3EI%20have%20managed%20to%20send%20I%C2%B2C%20commands%20unilaterally%20and%20display%20text%20on%20an%20LCD%2C%20for%20instance%2C%20but%20I%20am%20unsure%20how%20to%20write%20code%20for%20communicating%20with%20a%20slave%20device%20like%20the%20LM75A%2C%20which%20requires%20read%20operations.%20I%20have%20attached%20my%20current%20source%20code%20below%3B%20at%20present%2C%20I%20cannot%20read%20the%20temperature%20from%20the%20LM75A.%3CBR%20%2F%3E%E2%96%A0%20Overview%3CBR%20%2F%3E%E3%83%BBI%2FO%20ports%20assigned%20for%20I2C%20functionality%3CBR%20%2F%3E%E3%83%BBCommunication%20via%20polling%2C%20without%20interrupts%3C%2FP%3E%3CP%3E%E2%96%A0%20Main%20Queries%3CBR%20%2F%3EWhen%20wishing%20to%20return%20an%20ACK%20signal%20in%20master%20receive%20mode%2C%20it%20appears%20the%20LPC810%20lacks%20such%20a%20register%20(only%20registers%20for%20the%20three%20conditions%3A%20START%2C%20CONTINUE%2C%20STOP).%20Can%20this%20be%20read%20using%20the%20attached%20code%3F%20If%20possible%2C%20I%20would%20appreciate%20a%20concrete%20example%20of%20source%20code.%3C%2FP%3E%3CBR%20%2F%3E%3CDIV%3E%3CDIV%3E%3CP%3E%3CSPAN%3E%23ifdef%3C%2FSPAN%3E%3CSPAN%3E%20__USE_CMSIS%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22LPC8xx.h%22%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%23endif%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%3CCR_SECTION_MACROS.H%3E%3C%2FCR_SECTION_MACROS.H%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22romI2C.h%22%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%E6%9C%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AFROMAPI%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7%E3%80%81I2C%E3%81%AE%E5%AE%9A%E6%95%B0%E5%AE%9A%E7%BE%A9%E9%83%A8%E5%88%86%E3%81%AE%E3%81%BF%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22I2C_DEFINE.h%22%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3ELM75AAddr%3C%2FSPAN%3E%3CSPAN%3E%20(0x48)%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%E6%B8%A9%E5%BA%A6%E3%82%BB%E3%83%B3%E3%82%B5%E3%80%80%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EI2C_RW_W%3C%2FSPAN%3E%3CSPAN%3E%20(0x00)%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2FRW%EF%BC%88LSB%EF%BC%89%E3%81%AFLCD%E3%81%AF%E5%B8%B8%E3%81%AB%EF%BC%90%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3ELM75TempRegi_pointer%3C%2FSPAN%3E%3CSPAN%3E%20(0x00)%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%3C%2FSPAN%3E%3CSPAN%3ETemp%3C%2FSPAN%3E%3CSPAN%3E%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%83%9D%E3%82%A4%E3%82%BF%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F%2FCommand%3ARS%3D0%2CData%3ARS%3D%EF%BC%91%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3ELM75ConfRegi_pointer%3C%2FSPAN%3E%3CSPAN%3E%20(0x01)%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%3C%2FSPAN%3E%3CSPAN%3ECon%EF%AC%81guration%3C%2FSPAN%3E%3CSPAN%3E%20register%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Eint%3C%2FSPAN%3E%3CSPAN%3E%20waiting%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ESwitchMatrix_Init%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EIOCON_Init%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EI2C_Init%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%2F%2Fvoid%20I2C_one_Byte_Write(uint8_t%20data)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EI2C_Multiple_Write%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EWriteByte%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3E*%3C%2FSPAN%3E%3CSPAN%3Ei2c_data%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ESystick_Init%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EI2C_Addr_WSend%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EI2C_Addr_RSend%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ETemp_SenceInit%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EI2C_Multiple_Read%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EReadByte%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Euint16_t%20%3C%2FSPAN%3E%3CSPAN%3EReadTemperture_LM75A%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3Emon_CFG%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FI2C%E3%83%87%E3%83%BC%E3%82%BF%E3%83%A2%E3%83%8B%E3%82%BF%E7%94%A8%E9%96%A2%E6%95%B0%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F%2Fvoid%20I2C_Stop()%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%2F%2F%3C%2FSPAN%3E%3CSPAN%3ESystick%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ESysTick_Handler%3C%2FSPAN%3E%3CSPAN%3E()%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewaiting%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Estatic%3C%2FSPAN%3E%20%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3Ewait_ms%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Euint32_t%20%3C%2FSPAN%3E%3CSPAN%3Ems%3C%2FSPAN%3E%3CSPAN%3E)%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewaiting%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ESysTick_Config%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ESystemCoreClock%3C%2FSPAN%3E%3CSPAN%3E%2F%3C%2FSPAN%3E%3CSPAN%3E1000%3C%2FSPAN%3E%3CSPAN%3E*%3C%2FSPAN%3E%3CSPAN%3Ems%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Ewaiting%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Eint%3C%2FSPAN%3E%20%3CSPAN%3Emain%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eint%3C%2FSPAN%3E%20%3CSPAN%3ELED_C%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Euint16_t%20%3C%2FSPAN%3E%3CSPAN%3Etemp%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_GPIO_PORT%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EDIR0%20%3C%2FSPAN%3E%3CSPAN%3E%7C%3D%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ESystemCoreClockUpdate%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F%2F%20Enter%20an%20infinite%20loop%2C%20just%20incrementing%20a%20counter%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EIOCON_Init%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ESwitchMatrix_Init%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E)%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Etemp%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3EReadTemperture_LM75A%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELM75AAddr%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ereturn%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3CSPAN%3E%2F%2Fmain%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EI2C_Init%3C%2FSPAN%3E%3CSPAN%3E()%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_SYSCON%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EPRESETCTRL%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3D%3C%2FSPAN%3E%20%3CSPAN%3E~%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E0x1%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E6%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FAssert%20Reset%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_SYSCON%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EPRESETCTRL%20%3C%2FSPAN%3E%3CSPAN%3E%7C%3D%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E0x1%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E6%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FClear%20%3C%2FSPAN%3E%3CSPAN%3EResett%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F%2FSet%20i2c%20clock%20DIV%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EDIV%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0x0001%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FPCLK%20I2C%20Clock%E3%80%80%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTTIME%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FMater%20SCL%20Low%20%3C%2FSPAN%3E%3CSPAN%3ETimee%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ECFG%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_CFG_MSTEN%20%3C%2FSPAN%3E%3CSPAN%3E%7C%3C%2FSPAN%3E%20%3CSPAN%3E0x04%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%A2%E3%83%BC%E3%83%89%20%E3%83%A2%E3%83%8B%E3%82%BF%E3%82%A4%E3%83%8D%E3%83%BC%E3%83%96%E3%83%AB%20%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%B9%E3%83%88%E3%83%AC%E3%83%83%E3%83%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ETemp_SenceInit%3C%2FSPAN%3E%3CSPAN%3E()%7B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%E6%B8%A9%E5%BA%A6%E3%82%BB%E3%83%B3%E3%82%B5%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EConfig%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E3%3C%2FSPAN%3E%3CSPAN%3E%5D%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3CSPAN%3ELM75AAddr%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CSPAN%3ELM75ConfRegi_pointer%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CSPAN%3E0x00%3C%2FSPAN%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3EI2C_Multiple_Write%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELM75AAddr%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3E3%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3EConfig%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EI2C_Addr_WSend%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E)%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTSTATE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTST_IDLE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTDAT%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%7C%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%20address%20and%200%20for%20RWn%20bit%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTCTL%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_MSTCTL_MSTSTART%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%20send%20start%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTSTATE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTST_TX%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EI2C_Addr_RSend%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E)%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTSTATE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTST_IDLE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTDAT%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%7C%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%20address%20and%200%20for%20RWn%20bit%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTCTL%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_MSTCTL_MSTSTART%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%20send%20start%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTSTATE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTST_RX%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EI2C_Multiple_Write%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EWriteByte%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3E*%3C%2FSPAN%3E%3CSPAN%3Ei2c_data%3C%2FSPAN%3E%3CSPAN%3E)%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F%2FLPC_I2C-%26gt%3BCFG%20%3D%20I2C_CFG_MSTEN%3B%20%2F%2F%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%A2%E3%83%BC%E3%83%89%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EI2C_Addr_WSend%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Efor%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Eint%3C%2FSPAN%3E%20%3CSPAN%3Ei%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3Ei%3C%2FSPAN%3E%20%3CSPAN%3E%26lt%3B%3C%2FSPAN%3E%20%3CSPAN%3EWriteByte%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2B%2B%3C%2FSPAN%3E%3CSPAN%3Ei%3C%2FSPAN%3E%3CSPAN%3E)%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTSTATE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTST_IDLE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTDAT%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E*%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Ei2c_data%3C%2FSPAN%3E%3CSPAN%3E%2B%3C%2FSPAN%3E%3CSPAN%3Ei%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%20send%20data%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewait_ms%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E100%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2Fwait%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTCTL%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_MSTCTL_MSTCONTINUE%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%20continue%20transaction%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTSTATE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTST_TX%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2Fbreak()%3B%20%2F%2Fabort()%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTSTATE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTST_IDLE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2Fbreak()%3B*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTCTL%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_MSTCTL_MSTSTOP%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F%2Fif((LPC_I2C-%26gt%3BSTAT%20%26amp%3B%20I2C_STAT_MSTSTATE)%20!%3D%20I2C_STAT_MSTST_IDLE)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%2F%2F%E6%B8%A9%E5%BA%A6%E3%82%BB%E3%83%B3%E3%82%B5%E3%81%8B%E3%82%89%E3%81%AE%E6%B8%A9%E5%BA%A6%E3%83%87%E3%83%BC%E3%82%BF%E8%AA%AD%E3%81%BF%E3%81%A0%E3%81%97%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Euint16_t%20%3C%2FSPAN%3E%3CSPAN%3EReadTemperture_LM75A%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E)%7B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EReaddata_MSB%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Euint8_t%20%3C%2FSPAN%3E%3CSPAN%3EReaddata_LSB%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Euint16_t%20%3C%2FSPAN%3E%3CSPAN%3EReaddata%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F%2FI2C_Addr_RSend(%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E)%3B%20%2F%2Fread%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EI2C_Addr_WSend%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2Fwrite%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTDAT%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20LM75TempRegi_pointer%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F%2FLPC_I2C-%26gt%3BMSTCTL%20%3D%20I2C_MSTCTL_MSTSTART%3B%20%2F%2FRE-START%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTCTL%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_MSTCTL_MSTCONTINUE%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTSTATE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTST_TX%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTDAT%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EAddr%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%7C%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%E8%AA%AD%E3%81%BF%E3%81%A0%E3%81%97%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTCTL%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_MSTCTL_MSTSTART%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FRE%3DSTART%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EReaddata_MSB%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTDAT%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTCTL%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_MSTCTL_MSTCONTINUE%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EReaddata_LSB%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTDAT%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTSTATE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTST_RX%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMSTCTL%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_MSTCTL_MSTSTOP%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%20send%20stop%20NACK%E3%81%AE%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96%E3%81%B8%E3%81%AE%E9%80%81%E4%BF%A1%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTPENDING%3C%2FSPAN%3E%3CSPAN%3E))%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESTAT%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTSTATE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20I2C_STAT_MSTST_IDLE%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3EReaddata%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3EReaddata_MSB%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E8%3C%2FSPAN%3E%3CSPAN%3E%7C%3C%2FSPAN%3E%3CSPAN%3EReaddata_LSB%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Ereturn%3C%2FSPAN%3E%20%3CSPAN%3EReaddata%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ESwitchMatrix_Init%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F*%20Enable%20SWM%20clock%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_SYSCON%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESYSAHBCLKCTRL%20%3C%2FSPAN%3E%3CSPAN%3E%7C%3D%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E7%3C%2FSPAN%3E%3CSPAN%3E%7C%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E5%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FEnable%20SWM%20Clock%2CI2C%20Clock%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3ELPC_SWM%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EPINASSIGN7%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0x00ffffff%3C%2FSPAN%3E%3CSPAN%3EUL%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FSDA%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F*%20I2C0_SCL%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_SWM%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EPINASSIGN8%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0xffffff04%3C%2FSPAN%3E%3CSPAN%3EUL%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FSCL%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3ELPC_SWM%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EPINENABLE0%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0xffffffb3%3C%2FSPAN%3E%3CSPAN%3EUL%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3ELPC_SYSCON%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESYSAHBCLKCTRL%20%3C%2FSPAN%3E%3CSPAN%3E%7C%3D%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E18%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FEnables%20clock%20for%20IOCON%20block.%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EIOCON_Init%3C%2FSPAN%3E%3CSPAN%3E()%3C%2FSPAN%3E%20%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%2F*%20Enable%20UART%20clock%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ELPC_SYSCON%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ESYSAHBCLKCTRL%20%3C%2FSPAN%3E%3CSPAN%3E%7C%3D%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%26lt%3B%26lt%3B%3C%2FSPAN%3E%3CSPAN%3E18%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ESystick_Init%3C%2FSPAN%3E%3CSPAN%3E()%7B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3ESysTick%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ECTRL%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2FSystick_Countter%20stop%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ESysTick%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ELOAD%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E12000%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F1ms%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ESysTick%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EVAL%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ESysTick%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3ECTRL%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E0x07%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F%2F%3C%2FSPAN%3E%3CSPAN%3ESystick%3C%2FSPAN%3E%3CSPAN%3E%E3%80%80%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3Emon_CFG%3C%2FSPAN%3E%3CSPAN%3E()%7B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Euint32_t%20%3C%2FSPAN%3E%3CSPAN%3Emondata%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Emondata%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3ELPC_I2C%3C%2FSPAN%3E%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%3CSPAN%3EMONRXDAT%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2182307%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20I%C2%B2C%20communication%20on%20the%20LPC810%20(without%20using%20the%20ROM%20API)%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2182307%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F255410%22%20target%3D%22_blank%22%3E%40LPC81x1114%3C%2FA%3E%2C%3CBR%20%2F%3EOf%20course.%3CBR%20%2F%3EThe%20macro%20I2C_MSTCTL_MSTCONTINUE%20is%20defined%20with%20a%20value%20of%201%2C%20as%20shown%20in%20Chapter%2029.2.1%20%22Definitions%22.%20It%20is%20used%20in%20the%20MSTCTL%20register%2C%20which%20writes%20a%201%20to%20the%20MSTCONTINUE%20bit.%20This%20bit%20performs%20the%20following%20function%3A%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Habib_MS_0-1759962768950.png%22%20style%3D%22width%3A%20608px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Habib_MS_0-1759962768950.png%22%20style%3D%22width%3A%20608px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F359955i7D178BFFEBE6E15D%2Fimage-dimensions%2F608x256%3Fv%3Dv2%22%20width%3D%22608%22%20height%3D%22256%22%20role%3D%22button%22%20title%3D%22Habib_MS_0-1759962768950.png%22%20alt%3D%22Habib_MS_0-1759962768950.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EIn%20simplified%20terms%2C%20this%20bit%20tells%20the%20LPC%20controller%20that%20it%20can%20proceed%20with%20the%20next%20operation%20in%20the%20I2C%20protocol.%20For%20example%2C%20if%20a%20transmission%20has%20already%20started%20and%20an%20ACK%20has%20been%20received%2C%20the%20next%20step%20might%20be%20to%20send%20a%20data%20byte%20to%20the%20slave.%20This%20is%20when%20the%20MSTCONTINUE%20bit%20is%20activated.%3CBR%20%2F%3EThat%20is%20why%2C%20in%20the%20example%20%22Master%20writes%20one%20byte%20to%20slave%22%2C%20the%20bit%20is%20set%20after%20receiving%20an%20ACK%20and%20before%20sending%20the%20data%20byte.%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Habib_MS_1-1759962808651.png%22%20style%3D%22width%3A%20569px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Habib_MS_1-1759962808651.png%22%20style%3D%22width%3A%20569px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F359956iF27ECAD62A382E6B%2Fimage-dimensions%2F569x343%3Fv%3Dv2%22%20width%3D%22569%22%20height%3D%22343%22%20role%3D%22button%22%20title%3D%22Habib_MS_1-1759962808651.png%22%20alt%3D%22Habib_MS_1-1759962808651.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EBR%3CBR%20%2F%3EHabib%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2181258%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20I%C2%B2C%20communication%20on%20the%20LPC810%20(without%20using%20the%20ROM%20API)%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2181258%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHabib_MS%2C%3C%2FP%3E%3CP%3EThank%20you%20for%20your%20message.%3CBR%20%2F%3EI%20wrote%20a%20program%20using%20Chapter%2029.2%20%E2%80%9CCode%20Example%20I2C%E2%80%9D%20as%20a%20reference%2C%20but%20it%20isn't%20working%20properly.%3CBR%20%2F%3ECurrently%2C%20I%20cannot%20visualize%20how%20the%20LPC810%20operates%20when%20controlling%20as%20a%20master%20using%20hardware%20I2C.%3CBR%20%2F%3EI%20believe%20the%20code%20example%20lists%20three%20constants%20to%20set%20in%20LPC_I2C-%26gt%3BMSTCTL%3A%20I2C_MSTCTL_MSTSTART%2C%20I2C_MSTCTL_MSTCONTINUE%2C%20and%20I2C_MSTCTL_MSTSTOP.%3CBR%20%2F%3EI2C_MSTCTL_MSTSTART%20handles%20the%20start%20condition%20and%20restart%20condition%2C%20and%20also...%3CBR%20%2F%3EI2C_MSTCTL_MSTSTOP%20is%20for%20the%20stop%20condition%2C%3CBR%20%2F%3Ebut%20could%20you%20please%20explain%20how%20I2C_MSTCTL_MSTCONTINUE%20behaves%20in%20both%20master%20transmit%20mode%20and%20master%20receive%20mode%3F%3C%2FP%3E%3CP%3ETranslated%20with%20DeepL.com%20(free%20version)%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2180824%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20I%C2%B2C%20communication%20on%20the%20LPC810%20(without%20using%20the%20ROM%20API)%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2180824%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F255410%22%20target%3D%22_blank%22%3E%40LPC81x1114%3C%2FA%3E%2C%3C%2FP%3E%0A%3CP%3EI%20highly%20recommend%20reviewing%20Section%207.10%3A%20%22Protocols%20for%20Writing%20and%20Reading%20the%20Registers%22%20in%20the%20%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com%2Fproducts%2Fsensors%2Fi3c-ic-digital-temp-sensors%2Fdigital-temperature-sensor-and-thermal-watchdog%3ALM75A%23documentation%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3ELM75A%20datasheet%3C%2FA%3E.%20This%20section%20explains%20how%20the%20I2C%20communication%20frames%20should%20be%20structured%20to%20perform%20various%20actions%20with%20the%20sensor.%20For%20example%2C%20it%20includes%20the%20frame%20format%20required%20to%20write%20to%20the%20configuration%20register%3A%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Habib_MS_1-1759787216901.png%22%20style%3D%22width%3A%20590px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Habib_MS_1-1759787216901.png%22%20style%3D%22width%3A%20590px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F359662i544E44D66E98979C%2Fimage-dimensions%2F590x233%3Fv%3Dv2%22%20width%3D%22590%22%20height%3D%22233%22%20role%3D%22button%22%20title%3D%22Habib_MS_1-1759787216901.png%22%20alt%3D%22Habib_MS_1-1759787216901.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EAdditionally%2C%20there%20are%20other%20useful%20frame%20formats%20mentioned%20that%20can%20help%20you%20better%20understand%20the%20communication%20process.%20This%20section%20also%20highlights%20key%20aspects%20of%20I2C%20communication.%3CBR%20%2F%3EI%20also%20suggest%20checking%20out%20Section%207.3%3A%20%22Slave%20Address%22%2C%20which%20explains%20how%20to%20configure%20the%20sensor's%20slave%20address.%3CBR%20%2F%3EOn%20another%20note%2C%20the%20RM%20provides%20several%20example%20codes%20that%20directly%20access%20I2C%20registers%20without%20using%20the%20ROM%20API.%20These%20examples%20can%20serve%20as%20a%20helpful%20reference%20and%20are%20located%20in%20the%20chapter%2029.2%20called%20%22Code%20Examples%20I2C%22.%3CBR%20%2F%3EHope%20this%20helps.%3CBR%20%2F%3EBR%3CBR%20%2F%3EHabib%3C%2FP%3E%3C%2FLINGO-BODY%3E