For the case of the mcu as master and transmitter, the last thing that needs to be done is to send an I2C stop signal. This is accomplished by the code IIC1C_MST=0. But assuming there is alot more to transmit to another slave device, how does the programmer determine when the stop signal has been physically sent on the bus? Are we back to polling after implementing an interrupt driven scheme or back to adding software delay loops?
I cant use a delay because IIC1C_MST=0 is in an ISR and there are other ISRs that need low latency.
Theoretically I would like to send a I2C start and some data right after sending that I2C_stop. You can't follow a IIC1C_MST=0 immediately by an IIC1C_MST=1 (a start signal)....on my scope it seems to hang the bus with both SCL and SDA low.
I used the app note on how to use the I2C bus for HC08, HCS08, HC12 processors to get started but abandoned it in favor of the qg8 manual. I have also found that app note to be quick and dirty, not checking acks from the slave and not dealing with a loss of arbitration causing an int.