реклама на сайте
подробности

 
 
> i2c: программная реализация без PU, помогите пожалуйста! срочно надо!
junoSynthesizer
сообщение Apr 2 2007, 20:02
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397



итак, задача:
есть готовая схема, расчитанная под 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;
}


после сброса проца выполняю старт и пишу управляющий байт... АЦК не приходит. пишу в ИАРе.
help.gif


--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016