Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Столкнулся с подвисанием приема у CC2500
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Rf & Microwave Design
_3m
Столкнулся с подвисанием приема у CC2500.

GDO0 в режиме 0x06.
Фиксированная длина пакета, используются FEC, data whitening и CRC. Адрес не используется. Синхрослово 30/32 бита, преамбула 8 байт. RX FIFO Autoflush=ON.
Модуляция GFSK скорость 100кбит. RXOFF Mode=IDLE.

Сигнал от GDO0 заведен на вход INT0 атмеги, прерывания настроены по спаду, что дает прерывание по приходу валидного пакета. После обработки полученного пакета программа сбрасывает фифо и запускает прием заново.
Трансивер работает в режиме приема.
Пакеты поступают каждые 64мс, через несколько десятков минут прием зависает.
Если пакеты не поступают то не виснет (или еще не обнаружил).
Исследования показали что зависание происходит из-за того что при приеме пакета не формируется сигнал GDO0 (во всяком случае не возникает прерывание). Состояние зависшего трансивера - IDLE, в RX FIFO правильный принятый пакет. Перезапуск приема возобновляет работу.
Если рассуждать логически то прерывание по GDO0 может не формироваться только если GDO0 не устанавливается по приему синхрослова. Тем не менее последний пакет на котором связь виснет принимается, причем без ошибок.

Пока сделал периодическую проверку состояния CC2500 и если она перешла в IDLE в момент когда должна быть в RX перезапускаю прием. Но это как-то некрасиво. Хорошо бы разобраться в причине эффекта.

Изучение даташита и эрраты ни на какие мысли пока не натолкнуло.
Budek
Здравствуйте все. Хотя судя по количеству "откликнувшихся", наверное, в первую очередь мое приветствие обращено автору.
Столкнулся с той же проблемой... Причем зависание приемника происходит через произвольное время (шлю на него пока 4 байта каждые 2 секунды). Но минут за 20 обязательно зависает (может и после второго пакета уже). Помогает только очистка фифо и включение приема. Видимо, раз до этого никто не отозвался, вопрос к автору темы: победили? Поделитесь, как?
Спасибо.
_3m
Нет, не победил. Устройство работает только потому что процессор мониторит состояние трансивера и при необходимости перезапускает прием.
Выявить причину тяжело так как виснет редко и нерегулярно.
Budek
Цитата(_3m @ May 30 2010, 15:29) *
Нет, не победил. Устройство работает только потому что процессор мониторит состояние трансивера и при необходимости перезапускает прием.
Выявить причину тяжело так как виснет редко и нерегулярно.

Да уж, это конечно не есть хорошо. Но в любом случае, спасибо. Будем надеяться, может кто еще вдруг откликнется...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.