CODE I2C Interrupt handler

Table 1. CODE I2C Code example
Interrupt handler
void I2c_IRQHandler() {
uint32_t intstat = LPC_I2C->INTSTAT;
	uint32_t stat = LPC_I2C->STAT;
	if(intstat & I2C_STAT_MSTPENDING) {
		uint32_t mst_state = stat & I2C_STAT_MSTSTATE;
		if(mst_state == I2C_STAT_MSTST_IDLE) {
			LPC_I2C->MSTDAT = (0x23 << 1) | 1; // address and1 for RWn bit in order
// to read data
			LPC_I2C->MSTCTL = I2C_MSTCTL_MSTSTART; // send start
		}
		if(mst_state == I2C_STAT_MSTST_RX) {
			uint8_t data;
			data = LPC_I2C->MSTDAT; // receive data
			if(data != 0xdd) abort();
			LPC_I2C->MSTDAT = (0x23 << 1) | 0; // address and1 for RWn bit in order
// to read data
			LPC_I2C->MSTCTL = I2C_MSTCTL_MSTSTART; // repeated start(nack implied)
		}
		if(mst_state == I2C_STAT_MSTSTX) {
			LPC_I2C->MSTCTL = I2C_MSTCTL_MSTSTOP; // stop transaction
			LPC_I2C->INTENCLR = I2C_STAT_MSTPENDING;
		}
	}
}

-->