Цитата(yantux @ Jun 12 2012, 23:13)

Есть altera max2, которая подключена к ПЗС матрице, при чём подтягивающий резистор уже есть на плате. Т.е. предполагается, сто внутренний подтягивающий резистор altera max2 я использовать не должен.
Если я правильно понял по даташиту и i2c, я должен в max2 управлять подтягивающим резистором, чтобы в нужный момент принимать ACK или non-ACK бит от ПЗС? Как на vhdl реализовать управление внутренним подтягивающим резистором в altera max2?
В стандарте на I2C написано: "The transmitter releases the SDA line (HIGH) during the acknowledgeclock pulse.." Т.е. надо не подтягивающим резистором управлять, а переключать пин SDA в третье состояние. В ПЛИСе для этого надо объявить пин SDA, как bidirectional и, когда надо принимать ACK, переключить этот пин на вход, т.е. release the SDA line, а внешний подтягивающий резистор уже подтянет SDA вверх. Кстати, подтягивающий резистор нужен не абы какой, а достаточный для обеспечения требуемой длительности положительного фронта (1000 нс для 100 кГц и 300 нс для 400 кГц). Поэтому внутренний подтягивающий резистор мах2 для этих целей (5-25 кОм) может оказаться слишком большим для этой цели.