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

 
 
> Подключение нескольких ds1621
D H
сообщение Feb 15 2007, 12:29
Сообщение #1


Участник
*

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



Столкнулся с проблемой подключения двух ds1621 по и2с. Одна работает. Вторую подключаю - виснет. Наверно неправильно подключаю. Подскажите как сделать.
Сейчас подключено так:
SDA & SCL 10к к питанию.
При подключении к SDA (либо SCL) еще одного проводника для ds1621 виснет на старте (даже если второй ds1621 нет, т.е. панелька без нее). Убираю проводник, стартует нормально. Длина шлейфа 2м.
Да, еще вопрос. Первый ds1621 опрашиваю через нулевой адрес, для этого A1,A2,A3 на земле. Т.е. для выбора первого адреса на втором ds 1621 надо A1 подтянуть к плюсу, A2, A3 на землю?

Сообщение отредактировал D H - Feb 15 2007, 12:30
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
beer_warrior
сообщение Feb 15 2007, 23:18
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
1. Добавить на последнем устройстве конденсаторы на SDA, SCL к земле.

А зачем? Фронты "зализать"?

Попробую внятней.
Цитата
При подключении к SDA (либо SCL) еще одного проводника для ds1621 виснет на старте


1.Проводник - значит внесена помеха. Обычно это дает о себе знать при высоком сопротивлении нагрузки. Если в шину качается нормальный ток(а именно он задается резистором), наводки незаметны на фоне полезного сигнала.
2.Зависание само по себе. Обусловлено тем простым фактом, что I2C это не SPI. В SPI можно вытолкнуть данные и, если все физически исправно, быть увереннным, что они зайдут в слэйв. I2C - протокол адресуемый, протокол с командами и квитированием.Т.е. если помеха наложится на SPI пострадают отдельные биты, если на I2C - последовательность адресов, команд и подтверждений скорее всего будет нарушена. Т.е. вся транзакция пройдет неправильно.
Как делается обмен в АВР?
Выполняется команда (отсылаются данные) -> получается подтверждение -> по регистру статуса смотрится результат -> принимается решение: продолжение/выход/рестарт.
Обычно во всех конченных библиотечках, поставляемых с компиляторами получение подтверждения делается в цикле
Код
while(TWI_SR & some_const)

Если состояние номер some_const по каким-то причинам не прошло, контроллер будет крутится в бесконечном цикле. Чтобы избежать такой ситуации, надо обрабатывать все возможные коды возврата или (что лучше и проще) делать все на прерываниях. Только прерывания в библиотечку не уложишь, поэтому придется либо писать самому, либо портировать чужой код.

P.S. В который раз убеждаюсь, что CV это костыли, которые подкупают мнимой простотой, а впоследствии заводят на серьезные грабли. sad.gif


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- D H   Подключение нескольких ds1621   Feb 15 2007, 12:29
- - vmp   Цитата(D H @ Feb 15 2007, 12:29) Столкнул...   Feb 15 2007, 12:54
|- - D H   Цитата(vmp @ Feb 15 2007, 12:54) Цитата(D...   Feb 15 2007, 15:07
- - beer_warrior   ЦитатаSDA & SCL 10к к питанию.При подключении ...   Feb 15 2007, 17:10
- - D H   В процессе отладки выяснил: 1. виснет в месте иниц...   Feb 15 2007, 21:14
|- - SasaVitebsk   Цитата(D H @ Feb 15 2007, 22:14) В процес...   Feb 15 2007, 21:50
- - WHALE   beer_warrior Вы излишне категорины Фактор кривых ...   Feb 16 2007, 17:47
|- - SasaVitebsk   Цитата(WHALE @ Feb 16 2007, 18:47) beer_w...   Feb 16 2007, 23:38
- - beer_warrior   Уважаемый WHALE! Я имел возможность оценить Ва...   Feb 16 2007, 18:10
- - WHALE   я с вами не совсем согласен,но не будем превращать...   Feb 16 2007, 18:22
- - D H   Вот кусок кода. #asm .equ __i2c_port=0x18 ;POR...   Feb 16 2007, 19:10
- - jekler   Использовал стандартную библиотеку CV ds1621.h Дат...   Feb 16 2007, 21:34
- - WHALE   Саша,задержки тут не причем,там уже все сделано .Н...   Feb 17 2007, 00:40


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

 


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


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