Например TDA7294

Форум РадиоКот • Просмотр темы - Не работает I2C. Нет сигнала подтверждения. Help!
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб июл 26, 2025 20:32:44

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 2 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Не работает I2C. Нет сигнала подтверждения. Help!
СообщениеДобавлено: Пт май 04, 2012 17:16:10 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб ноя 07, 2009 15:27:59
Сообщений: 194
Рейтинг сообщения: 0
В общем, товарищи, столкнулся с данной проблемой. Микроконтроллер - ADuC845 (отладочная плата) соединен с E2PROM памятью от ATMEL и часами DS1307 по I2C. Соединения проверял неоднократно, все верно. После передачи стартового условия и первого байта, на девятом такте приемное устройство не хочет давать сигнал подтверждения приема, независимо от того, память это, или часы. Подозреваю, что проблема в программе, но вот где собака порылась найти не могу :( Ниже выкладываю код программы (полезную часть), надеюсь на Вашу помощь :)


....

sbit SDA=P3^3;
sbit SCL=P3^5;

...

void I2C_Start(void) {

SDA=1;
SCL=1;
delay();
if(SDA==0) {er=1;};
if(SCL==0) {er=1;};
if(er==1) {send_lcd_symbol(set_second_line+4, 'X');};
SDA=0;
delay();
SCL=0;

}

void I2C_Send_byte(char byte) {

unsigned int bits;
for(bits=0; bits<8;bits++) {
if((byte&0x80)==0x80) {
SDA=1;
delay();
SCL=1;
delay();
SCL=0;
send_lcd_symbol(set_first_line+bits, '1');
}
else {
SDA=0;
delay();
SCL=1;
delay();
SCL=0;
send_lcd_symbol(set_first_line+bits, '0');
};
byte=byte<<1;
}
SDA=1;
delay();
SCL=1;
delay();
if(SDA==0) {
NOACK=1;
send_lcd_symbol(set_second_line, 'A');
} else {
NOACK=0;
send_lcd_symbol(set_second_line, 'E');
}
SCL=0;
}

...


void main(void) {


En=0;
RW=0;
LCD_Init();
SDA=1;
SCL=1;
I2C_Start();
I2C_Send_byte(0xA1);
while(1) {}
}


PS. Для понятия того, что ТАМ творится, использую ЖКИ, поэтому пусть он Вас не смущает =)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не работает I2C. Нет сигнала подтверждения. Help!
СообщениеДобавлено: Пт май 04, 2012 22:25:18 
Открыл глаза
Аватар пользователя

Зарегистрирован: Сб авг 28, 2010 13:29:43
Сообщений: 59
Откуда: Докучаевск, Донецк
Рейтинг сообщения: 0
Насколько я знаю, (извините, если глупость сморозю:) по стандарту I2C для передачи "1" нельзя внаглую выставлять на ножке мастера высокий уровень. Нужно перевести вывод порта на вход, и дождаться пока подтягивающие резисторы поднимут шину в "1". У вас в коде
Код:
SDA=1;
 SCL=1;
 delay();
 if(SDA==0) {er=1;};
 if(SCL==0) {er=1;};

непонятно. Ставим SCL и SDA в "1" и тут же проверяем их на "0"

_________________
Техноманьяк и IT-шаман. Танцы с бубном на дому.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y