Dmitri Vladimirovich писал(а):А если несколько программых И2Ц взять?
Фишка в том, что i2c это открытый коллектор, это надо железо городить, а не только программно пинами дергать.
Технический форум по робототехнике.
Dmitri Vladimirovich писал(а):А если несколько программых И2Ц взять?
Vooon писал(а):У авра PORTxy = 0, DDRxy = 0 | 1;
=DeaD= писал(а):Dmitri Vladimirovich писал(а):А если несколько программых И2Ц взять?
Фишка в том, что i2c это открытый коллектор, это надо железо городить, а не только программно пинами дергать.
Michael_K писал(а):Основная проблема в том, что если делать правильно (по спецификации I2C),
то необходимо отслеживать готовность слейва на каждом бите. По спецификации слейв может зажать клоки в любой момент, и мастер должен ждать, пока слейв их не отпустит.
dccharacter писал(а):Вот например, я сейчас делаю драйвер двигателей, совместимый с OR. Но вчера почти что решил делать с управлением не по RoboMD2, а по i2c.
=DeaD= писал(а):dccharacter писал(а):Вот например, я сейчас делаю драйвер двигателей, совместимый с OR. Но вчера почти что решил делать с управлением не по RoboMD2, а по i2c.
Тогда вешайте туда еще и 2 разъема энкодеров сдвоенных в распиновке GND,VCC,SIG1,SIG2.
=DeaD= писал(а):На каждом энкодере SIG1 (или на каждом - SIG2) надо завести на прерывание по изменению уровня.