Аппаратный I2C

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
EclipsV
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср фев 27, 2013 01:30:10

Аппаратный I2C

Сообщение EclipsV »

Доброго времени суток,столкнулся со странным поведением I2C. На шине два устройства PCF8574AT(одно устройство дисплей,второе размножитель портов) и мастер pic16f690.
Проблема с инициализацией шины, она иногда виснет.Вот код который использую:
void I2C_Start(){
I2C_Wait();
SEN=1;
while(!SEN);
}

void I2C_Stop(){
I2C_Wait();
PEN=1;
}

void I2C_Wait(){
while((SSPSTAT&0x04)||(SSPCON2&0x1F));
}

void I2C_TX(char buf_w){
I2C_Wait();
SSPBUF=buf_w;
while(!R_W);
}

Проблема в циклах while(!SEN);while(!R_W), тут и зависает программа.Если их убрать проблем не возникает все работает как надо.
Но в документации CN_00735a от микрочипа они есть.
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Re: Аппаратный I2C

Сообщение -=Vovka=- »

Поищите на сайте микрочипа, может там есть эррата насчет i2c...
В циклы надо добавить переменную-счетчик и по ее обнулению вылет из цикла.
Насколько мне известно, с железным i2c мало кто работает: намучившись, переходят на программный...
EclipsV
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср фев 27, 2013 01:30:10

Re: Аппаратный I2C

Сообщение EclipsV »

Если есть аппаратная поддержка, то думаю не стоит городить велосипед. Еще разобрал программу нашел 2 причины зависания:в первом случае неправильно выставил для одной из микрух ACK/NACK, вторая это проблема с подключеным PIc2Kit в режиме DEBUG без него все работает.
Спасибо за совет, добавил счетчик при опросе флагов.
Аватара пользователя
VHEMaster
Потрогал лапой паяльник
Сообщения: 374
Зарегистрирован: Сб июл 14, 2012 09:20:09
Откуда: Украина, город Полтава

Re: Аппаратный I2C

Сообщение VHEMaster »

Сколько геморроя у меня было когда два PICа пытался подружить между собой по I2C... Тут подводных каменей не сосчитать.
Всем канифоли :)
https://vk.com/maks_naumchuk
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Re: Аппаратный I2C

Сообщение -=Vovka=- »

Сколько раз я не пытался сделать на аппаратном i2c - заканчивалось программным...
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25155
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Аппаратный I2C

Сообщение КРАМ »

Вопросы только со слейвом. Аппаратный мастер работает без проблем.
В теме, по моему, никто вопрос про слейв не ставил.
К слову, в PIC24FJ256GA702 мастер I2C вообще отлично работает через DMA.
EclipsV
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср фев 27, 2013 01:30:10

Re: Аппаратный I2C

Сообщение EclipsV »

Слейв пробавал на макетке, проблем не заметил.Но опять же в режиме DEBUG=ON, возможны зависания на флаге SEN.
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Re: Аппаратный I2C

Сообщение -=Vovka=- »

[uquote="EclipsV",url="/forum/viewtopic.php?p=3303612#p3303612"]возможны зависания на флаге SEN.[/uquote]
Таймером или циклом отслеживать... :tea:
Ответить

Вернуться в «PIC»