Сейчас вот переношу один старый асмовый проект для меги8 на си. И вспомнил, что была у меня проблема с шиной I2C - если в процессе обмена данными возникала ошибка, то я сразу после посылки STOP начинал отправлять START для повторной передачи. То есть совсем без паузы. Что приводило к невыполнению посылки START`а, так как, видимо, в это время всё ещё выполнялся STOP...
Тогда я просто поставил паузу в несколько миллисекунд после каждого стопа (или перед каждым стартом). Есть ли другой способ, "более красивый"? И почему атмеловцы не стали устанавливать флаг TWINT после завершения STOP?
|