|
СС1101, устранение коллизий |
|
|
|
Feb 1 2014, 16:06
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
Разработал и изготовил 4 устройства на сс1101: устройства A1,A2,A3 посылают на устройство B пакеты, а устройство B квитирует их (передает своему Ax короткий пакет подтверждения). Все работает до тех пор, пока не наступит момент, когда два устрйства Ax пытаются передать свои пакеты одновременно (ну или почти одновременно, тактирование от внутреннего RC STM32F051). В этом случае устройство B "зависает", т. е. его сс1101 не может принять пакет от любого Ax. Помогает только сброс/переинициализация устройства В. Сейчас усложнять протокол тайм-слотами нет времени, хотелось бы разобраться как можно выявить эту ситуацию коллизии в устройстве В с помощью регистров сс1101 и просто по этому событию перегрузить трансивер. Если такая возможность есть, подскажите в какую сторону смотреть?
|
|
|
|
|
 |
Ответов
|
Feb 2 2014, 15:30
|

Частый гость
 
Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747

|
Цитата Так это причина известная. Нигде о подобном не слышал, самому дико любопытно, хотя с зависаниями сталкивался, но так и не выяснил их природу. Да, надо включать RX, у меня был включен переход автоматом на RX. Слушает среду недолго, если там тихо, а так почти всегда, только если в упор никто не вещает без умолку, сразу в передачу. У меня полное время передачи занимало 10-20 мс., т.е. с прослушиванием, подготовкой в TX и передачей в эфир 20 байт на 10к. Несколько мс. должно быть достаточно.
--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
|
|
|
|
|
Feb 2 2014, 15:56
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
Цитата Элементарно, Ватсон, у меня работает один модуль и проблема имеет место быть. Сидел час отладчиком на приемнике B - не обнаружил ни единого вылета в IDLE при единственном передающем Ax. Как только передают несколько Ax сразу хорошо видно как передаваемые пакеты все ближе и ближе во времени становятся друг к другу и, в определенный момент ловлю вылет в IDLE на устройстве B. Очень интересная ситуация, выяснить бы, откуда ноги растут... Цитата(Mihey_K @ Feb 2 2014, 19:30)  Да, надо включать RX, у меня был включен переход автоматом на RX. Слушает среду недолго... Дело в том, что мои устройства Ax - приборы с батарейным питанием, которые раз в минуту передают данные устройству B. Ясно, что для экономии батарейки время передачи и вообще активности нужно стремить к нулю. Даже протокол я построил вокруг этого требования. Поэтому, из режима сна нужно было бы сразу начинать передачу. Но после подключения CCA ясно, что сначала нужно прослушать канал. Все же сколько времени слушать??? Думаю миллисекунды - это много, предположительно - не более 1ms... Запрограммировал GDO1=0x09 на индикацию CCA но это ничего не решает - при переходе SLEEP->IDLE->RX неясно, когда данные на ноге GDO1 будут валидны... P.S. Вот, надумал: время нахождения в RX должно быть примерно: T = T1 + T2, где T1 - время перехода SLEEP->IDLE->RX, T2 - время приема примерно ДВУХ байт на текущей скорости. У мну скорость 1200 бод/сек., т. е. время T = 1ms вроде должно быть оптимально минимальным )))
|
|
|
|
Сообщений в этой теме
ivainc1789 СС1101 Feb 1 2014, 16:06 Pasha_a13 В настройках СС1101 есть флажок, который позволяет... Feb 1 2014, 17:02 ivainc1789 Цитата(Pasha_a13 @ Feb 1 2014, 21:02) Как... Feb 1 2014, 18:52 Salamander Цитатапри одновременном/последовательном приеме не... Feb 2 2014, 08:16 ivainc1789 Цитата(Salamander @ Feb 2 2014, 12:16) Та... Feb 2 2014, 09:17 Mihey_K Код бы приемника B показали. Как вариант борьбы с ... Feb 2 2014, 08:35 Mihey_K Посмотрите эррату, для 64 байт может быть похожий ... Feb 2 2014, 09:34 ivainc1789 Написал функцию восстановления RX режима (все же р... Feb 2 2014, 14:59 Salamander КодПросто раздирает любопытство, почему не связано... Feb 2 2014, 15:24 FPGAz Цитата(Salamander @ Feb 2 2014, 18:24) Эл... Feb 11 2014, 14:13 Mihey_K 1 мс. хватит. Можно проверить имперически: выстави... Feb 2 2014, 16:11 ivainc1789 ЦитатаПохоже, что у Вас сбор с датчиков, тогда воо... Feb 2 2014, 16:40 Mihey_K Пробуждение по часовому таймеру? И каким образом р... Feb 2 2014, 17:10 ivainc1789 Цитата(Mihey_K @ Feb 2 2014, 21:10) И как... Feb 2 2014, 17:24 Mihey_K Тогда не заморачивайтесь, разве что добавить повто... Feb 2 2014, 23:43 ivainc1789 Цитата(Mihey_K @ Feb 3 2014, 03:43) А поч... Feb 3 2014, 07:29 Mihey_K Какая дальность требуется? В помещении? Feb 3 2014, 07:59 ivainc1789 Цитата(Mihey_K @ Feb 3 2014, 11:59) Какая... Feb 3 2014, 08:13 ivainc1789 Кстати, я вроде понял, почему трансивер вываливает... Feb 3 2014, 09:57 rx3apf Почему не избавляет ? Если используется непрерывны... Feb 3 2014, 10:06 ivainc1789 Цитата(rx3apf @ Feb 3 2014, 14:06) Почему... Feb 3 2014, 11:54 rx3apf Зависит от наличия или отсутствия FEC, и я использ... Feb 3 2014, 12:22 ivainc1789 И все же. Передатчик передает 4 байта преамбулы и ... Feb 3 2014, 13:13 Mihey_K В регистре MCSM2 же задается таймаут поиска преамб... Feb 3 2014, 14:05 ivainc1789 Цитата(Mihey_K @ Feb 3 2014, 18:05) В рег... Feb 3 2014, 14:43 Mihey_K ЦитатаНу и как будете задавать?Даташит, стр. 80, т... Feb 3 2014, 15:00 ivainc1789 Цитата(Mihey_K @ Feb 3 2014, 19:00) Даташ... Feb 3 2014, 15:37 Pasha_a13 Если я правильно понял, то устройство B у Вас со с... Feb 9 2014, 11:40 ivainc1789 Цитата(Pasha_a13 @ Feb 9 2014, 15:40) Есл... Feb 10 2014, 08:33 Mihey_K Да как в ZigBee похоже. Там проснулся датчик, сооб... Feb 10 2014, 08:44 Pasha_a13 В Вашем случае для устройства В WOR не нужен, он б... Feb 10 2014, 18:05 ivainc1789 Цитата(Pasha_a13 @ Feb 10 2014, 22:05) Ск... Feb 11 2014, 11:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|