|
unsigned char i2c_read(unsigned char ucAdr)
Внимательно смотрим на эти команды:
ucDat=i2c_GetByte(I2C_MORE);
i2c_Stop();Во что они выливаются?
i2c_GetByte оканчивается вызовом i2c_SendAcknowledge(more), в конце которой SCL = 1.
теперь вызывается i2c_Stop():
SCL = 1;
SCL_DIR = I2C_OUTPUT;SDA = 0;/* ensure the data is low first */
SDA_DIR = I2C_OUTPUT;SCL_DIR = I2C_INPUT;/* float clock high */
А вот в этот момент память, получившая на последний байт ACK = I2C_MORE начинает передавать следующий байт, а вовсе не ждать старта/стопа. Ясное дело, что она у Вас не работала.
E-mail: info@telesys.ru