А вот основной:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Сергей Борщ 23 июля 2004 г. 13:55
В ответ на: Нет, погорячился. Вот он: отправлено Сергей Борщ 23 июля 2004 г. 13:47


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