итак, задача:
есть готовая схема, расчитанная под 51 проц. надо её пересадить на 8515 -> надо написать драйвер и2ц для общения с часиками 1307 БЕЗ использования подтягивающего резистора на линии СДА и СЦЛ.
на 51м работало, на авр - никак не могу завести, а срочно надо. готового нигде не нашёл, попытался написать сам. видимо где-то туплю, подскажите где:
Код
void i2c_start()
{
SDA_port = 1;
SCL_port = 1;
I2CDELAY();
SDA_ddr = 1;
SDA_port = 0;
I2CDELAY();
SCL_ddr = 1;
SCL_port = 0;
I2CDELAY();
}
ubyte i2c_wb(ubyte i2c_data)
{
ubyte i = 8, acknowledge = 0, tmp = 0;
do
{
tmp = i2c_data;
SDA_port = (ubyte)(tmp & _0b10000000);
i2c_data <<= 1;
I2CDELAY();
SCL_port = 1;
I2CDELAY();
SCL_port = 0;
I2CDELAY();
}
while (--i);
SDA_ddr = 0;
SDA_port = 1;
I2CDELAY();
SCL_port = 1;
I2CDELAY();
if (!SDA_pin)
{
acknowledge = 1;
*left_7seg = 0xac; // вывожу на индикатор для проверки, пришло ли ацк
}
SCL_port = 0;
I2CDELAY();
SDA_ddr = 1;
return acknowledge;
}
после сброса проца выполняю старт и пишу управляющий байт... АЦК не приходит. пишу в ИАРе.