02.05.2009, 22:43
|
#591
|
Временная регистрация
Регистрация: 22.07.2006
Сообщений: 54
Сказал спасибо: 7
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
dosikus спасибо, много интересного.
varostov спасибо, завтра попробую подправить.
|
|
|
|
03.05.2009, 15:24
|
#592
|
Прохожий
Регистрация: 03.05.2009
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
товарищи радиолюбители, помогите начинающему. Кто-нибудь из вас мерил с помощью модуля CCP микроконтроллера pic12f683(да вообще любого микроконтроллера pic) размеры импульсов? Если да, то киньте прогу пожалуйста (можно на почту movlost@rambler.ru).
|
|
|
|
23.05.2009, 18:04
|
#593
|
Гражданин KAZUS.RU
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
|
здравствуйте форумчане подскажите такой вопрос:я прочитал по поводу адресации шины И2с и увидел что она поддерживает общий вызов. это адрес 0х00. так вот при этом я должен работать с этим аресом как с обычным? меня интересует что будет с битом подтвержднения? и еще вопрос немного не в тему.подскажите пожалуйста как лучше поступить в такой ситуации. имеется система из трех контроллеров общающихся по И2С. в реальности бываетт что шина подвисает, для того что бы дальше шла работа я ввел сторожевой теймер и возник вопрос как правильно засинхронизировать начало отсчета всех трех таймеров. даже если это начало самой программы то у меня возникает проблема что программы на всех трех контроллерах начинают работать в разное время(контроллеры находятся на разных платах со своими стабилизаторами питания и из-за этого напряжение питания достигает необходимого уровня за разное время).
|
|
|
|
24.05.2009, 14:15
|
#594
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от Gladkih
|
проблема что программы на всех трех контроллерах начинают работать в разное время.
|
а как у тебя организован обмен? один мастер или мульти?
По идее, кто то должен инициировать обмен...
и что значит зависает шина?... SCL или SDA остаётся = 0?
|
|
|
|
24.05.2009, 14:50
|
#595
|
Гражданин KAZUS.RU
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
|
Сообщение от picavr
|
Сообщение от Gladkih
|
проблема что программы на всех трех контроллерах начинают работать в разное время.
|
а как у тебя организован обмен? один мастер или мульти?
По идее, кто то должен инициировать обмен...
и что значит зависает шина?... SCL или SDA остаётся = 0?
|
обмен один мастер, а че именно зависает в и2с точно не знаю но ориентировачно при запросе нескольких байт с подтвержением. т.е. мастер спрашивает данные а слейв в это время чтото делает и не знает что его спрашивают и получается что мастер висит.
|
|
|
|
24.05.2009, 16:04
|
#596
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от Gladkih
|
обмен один мастер, а че именно зависает в и2с точно не знаю но ориентировачно при запросе нескольких байт с подтвержением. т.е. мастер спрашивает данные а слейв в это время чтото делает и не знает что его спрашивают и получается что мастер висит.
|
посмотреть осцилографом на шине... или сканером I2C, что бы понять что творится.
А как же у тебя код написан, что слейв может и не ответить?... используй тогда I2C модуль что бы мог отвечать в любое время...
Введи TIMEOUT запроса МАСТЕРа, т.е. если СЛЕЙВ не ответил, МАСТЕР ждёт некоторое время и повторяет запрос (отсчитывать попытки установки связи) если за некоторое количество попыток СЛЕЙВ не ответил, значит СЛЕЙВ или отсуствует или неисправность шины...
или сложно додуматся?
|
|
|
|
24.05.2009, 16:27
|
#597
|
Гражданин KAZUS.RU
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
|
Сообщение от picavr
|
Сообщение от Gladkih
|
обмен один мастер, а че именно зависает в и2с точно не знаю но ориентировачно при запросе нескольких байт с подтвержением. т.е. мастер спрашивает данные а слейв в это время чтото делает и не знает что его спрашивают и получается что мастер висит.
|
посмотреть осцилографом на шине... или сканером I2C, что бы понять что творится.
Введи TIMEOUT запроса МАСТЕРа, т.е. если СЛЕЙВ не ответил, МАСТЕР ждёт некоторое время и повторяет запрос (отсчитывать попытки установки связи) если за некоторое количество попыток СЛЕЙВ не ответил, значит СЛЕЙВ или отсуствует или неисправность шины...
или сложно додуматся?
|
да додуматся не сложно, но по твоему получается необходимо отказаться от битов подтверждения?!дело в том что модуля обмена уже написаны и они используют бит подтверждения. по модулям у меня сначала мастер проверяет наличие интересующего слейва(причем если такового нет при 10 попытка взводится флаг и выход из модуля) потом передает команду потом принимает или передает данные и затем передает или принимает контрольную сумму(тоже 10 раз если не совпала КС и взводится флаг). при этом для каждой команды у меня не фиксированная длина данных, она зависит от номера команды.дело в том что по шине идут данные от 1-го до 4-х байт и терять время на фиксированную длину нет возможности.
|
|
|
|
24.05.2009, 17:53
|
#598
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от Gladkih
|
по твоему получается необходимо отказаться от битов подтверждения?
|
Это почему отказатся от битов подтверждения? как раз по битам подтверждения и определяется есть ли ответ от СЛЕЙВА... а после ПОСЛЕДНЕГО байта запроса МАСТЕР отсчиывает TIMEOUT и если нет ответа то соответствено повтор запроса...
Я бы сделал так...
На каждую посылку от МАСТЕРА, СЛЕЙВ должен ответить подтверждающей посылкой...(например если СЛЕЙВ принял правильно и КС совпадает, то он отсылает только принятую КС, если не правильно, то отправляет байт ОШИБКА и КС) тогда МАСТЕР всегда будет знать.. принял СЛЕЙВ или нет... и правильно ли...
А у тебя наверное этого нет...
Продумывай правильно протокол...
В шине МДБ например 9 битовые посылки, и посылки разной длинны от 2-3 байта до десятков байт. 9 бит от МАСТЕРА показывает это передача для СЛЕЙВА данных или МАСТЕР запрашивает данные у СЛЕЙВА.
А ответе СЛЕЙВА этот бит показывает правильность приёма СЛЕЙВОМ данных, и МАСТЕР всегда знает правильно ли СЛЕЙВ его понял..
|
|
|
|
24.05.2009, 18:06
|
#599
|
Гражданин KAZUS.RU
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
|
спасибо за совет.я подумаю и попробую.вопрос закрыт.
|
|
|
|
24.05.2009, 18:20
|
#600
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
На шину I2C неплохо бы снифер иметь
http://en.radzio.dxp.pl/i2c-sniffer/ , жаль что пиккит сериал анализер этого не может .
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:22.
|
|