А что находится в TWSR при этом?
P.S. Частая ошибка при работе с TWi - подача СТАРТ сразу после подачи СТОП. Возникает оттого, что при инициации выдаче на шину условия СТОП бит TWINT в TWCR выставляется сразу, не дожидаясь завершения формирования данного сигнала на шине. По этой причине перед подачей очередного старта нужно проверять, завершена ли формировка ни шине условия "стоп", т.е. проверкой бита TWSTO в TWCR
P.P.S. Пересмотрел даташит - вроде бы контроллер после записи в TWCR условия "старт" дожидается освобождения линии и подает старт. Т.е. поссле этого контроллер может либо "зависнуть" на строке while (!(TWCR & 0x80)); либо в TWSR может быть 2 кода - подан старт (0x08) или подан repeated start (0x10).
|