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

 
 
 
Reply to this topicStart new topic
> PIC24FJ и I2C1, ошибка при выдаче старта - кто-нибудь поборол ?
Diz
сообщение Mar 24 2008, 20:53
Сообщение #1


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

Группа: Участник
Сообщений: 84
Регистрация: 1-08-06
Пользователь №: 19 250



После инициализации модуля и посылки старта (SEN=1) сразу же приходит bus collision (BCL).
Ситуация описана в errata, но шаманство оттуда (опустить SDA и SCL перед включением модуля)
не помогает. Перевешивать EEPROM на второй модуль I2C очень нежелательно.

Может, кто-то нибудь поборол и мне не придется дергать ногами вручную ?
Go to the top of the page
 
+Quote Post
Ilya_A
сообщение Mar 25 2008, 08:24
Сообщение #2


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

Группа: Свой
Сообщений: 166
Регистрация: 1-12-05
Из: Иркутск
Пользователь №: 11 630



Цитата(Diz @ Mar 25 2008, 04:53) *
После инициализации модуля и посылки старта (SEN=1) сразу же приходит bus collision (BCL).
Ситуация описана в errata, но шаманство оттуда (опустить SDA и SCL перед включением модуля)
не помогает. Перевешивать EEPROM на второй модуль I2C очень нежелательно.

Может, кто-то нибудь поборол и мне не придется дергать ногами вручную ?


C таким пока не встречался, но как раз развожу платку под PIC24FJ64GA004. Учел вашу ошибку, уже перекинул ноги на второй порт, большое вам спасибо smile.gif
Go to the top of the page
 
+Quote Post
ANV
сообщение Apr 3 2008, 16:56
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 69
Регистрация: 16-10-05
Пользователь №: 9 713



Цитата(Diz @ Mar 24 2008, 22:53) *
После инициализации модуля и посылки старта (SEN=1) сразу же приходит bus collision (BCL).
Ситуация описана в errata, но шаманство оттуда (опустить SDA и SCL перед включением модуля)
не помогает. Перевешивать EEPROM на второй модуль I2C очень нежелательно.

Может, кто-то нибудь поборол и мне не придется дергать ногами вручную ?


Посмотрите сдесь
http://forum.microchip.com/tm.aspx?m=271183
Go to the top of the page
 
+Quote Post
Diz
сообщение Apr 3 2008, 22:10
Сообщение #4


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

Группа: Участник
Сообщений: 84
Регистрация: 1-08-06
Пользователь №: 19 250



Спасибо, посмотрел. Нормального решения нет - кроме использования внешних костылей
для дерганья SDA. Я в итоге прицепил софтовый i2c (и настройка выходов в режим с открытым стоком оказалась очень кстати).
Go to the top of the page
 
+Quote Post
ANV
сообщение Apr 4 2008, 11:13
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 69
Регистрация: 16-10-05
Пользователь №: 9 713



Цитата(Diz @ Apr 4 2008, 01:10) *
Спасибо, посмотрел. Нормального решения нет - кроме использования внешних костылей
для дерганья SDA. Я в итоге прицепил софтовый i2c (и настройка выходов в режим с открытым стоком оказалась очень кстати).


Так вроде не надо ничего дергать (хотя я мог и просмотреть, мельком посмотрел). Там ниже labegf писал:
Цитата
After many tests, I discovered that the following initialization works. But, I just got it using a 10K pull-up resistors in the data and clock wires. The previous 4K7 were resulting in any unexpected behavior that I'm not able to explain.


void DrvI2C__Init (void)
{
TRISBbits.TRISB9= 0; //PB9 is output (SDA pin)
LATBbits.LATB9 = 0;
Nop();
I2C1BRG = 39;
I2C1CON = 0xD200; //Enable While PB9 is low
I2C1ADD=0;
I2C1MSK=0;
}


два внешних резистора ...
Go to the top of the page
 
+Quote Post
Diz
сообщение Apr 4 2008, 14:35
Сообщение #6


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

Группа: Участник
Сообщений: 84
Регистрация: 1-08-06
Пользователь №: 19 250



В новой эррате написано, что этот маневр будет работать только иногда, рекомендуют
дергать пином снаружи. Видимо, в случае высокоомных резисторов SDA поднимается
достаточное время, чтобы логика только что включенного i2c распознала смену уровня.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:24
Рейтинг@Mail.ru


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