Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CC2420. Скорость передачи.
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Rf & Microwave Design
osminog
Есть две платы на СС2420 и ATmega128. Драйвер для работы с CC2420 взят с сайта Чипкона. Пакеты передаются и получаются, прием акнолиджментов включен. При попытке посылать пакеты в цикле без паузы между ними, передаются первые 2-3 пакета и все. При увеличении паузы между пакетами передача происходит нормально, но пауза настолько большая, что скорость передачи очень сильно падает. Я так понимаю это происходит из-за перекалибровки передатчика при каждой передаче пакета или я что-то не понимаю=)) Может кто-то уже с этим сталкивался, можно ли как-нибудь решить эту проблему?
osminog
никаких идей нет?
-=MISHA=-
На каком расстоянии проверялось и какое максимальное расстояние передачи достигалось?
osminog
Цитата(-=MISHA=- @ Dec 4 2006, 10:04) *
На каком расстоянии проверялось и какое максимальное расстояние передачи достигалось?

проверялось и рядом, и на расстоянии метров 50-т в помещении.
-=MISHA=-
Цитата(osminog @ Dec 5 2006, 16:32) *
Цитата(-=MISHA=- @ Dec 4 2006, 10:04) *

На каком расстоянии проверялось и какое максимальное расстояние передачи достигалось?

проверялось и рядом, и на расстоянии метров 50-т в помещении.


У меня cc2420 в связке с msp430 работает довольно долго. Был момент, когда обмен прекращался, но это я забыл премный буфер очистить.
Могу прислать свои исходники. Может помогут.

Но дальность не превышает 5-7 метров в помещении. Пришлите, пожалуйста, свои исходники. Может мне чем поможете smile.gif 2msn@mail.ru
osminog
хм... я наверное чего-то не понимаю, у вас же тоже перед каждой посылкой пауза Delay(3000), зачем она нужна?
-=MISHA=-
Цитата(osminog @ Dec 7 2006, 08:03) *
хм... я наверное чего-то не понимаю, у вас же тоже перед каждой посылкой пауза Delay(3000), зачем она нужна?


Я отправил свой первый вариант для тестирования. Второй не нашел sad.gif . Принцип работы второго был следующий:
Есть 2 одинаковых модуля с двумя одинаковыми программами. При нажатии на кнопку первого, он посылает пакет во второй, если 2-й принимает его, то отсылает обратно. Первый при принятии отсылает 2-му. И так бесконечно.
Так работало очень долго.
Я отключил подтверждения передачи. Может в этом проблема.

И ещё можно попробовать мои настройки сс2420:
cc2420_reg_write(CC2420_REG_MDMCTRL0, 0x02E2); // Addr decoder OFF, auto CRC ON
cc2420_reg_write(CC2420_REG_MDMCTRL1, 0x0500);
cc2420_reg_write(CC2420_REG_IOCFG0, 0x007F); // Set the FIFOP threshold to maximum
cc2420_reg_write(CC2420_REG_SECCTRL0, 0x01C4); // Turn off "Security enable"
osminog
А Delay во второй версии программы в цикле у вас есть? Просто вы наверное не совсем так меня поняли. У меня тоже настройки такие же только акнолиджи включены. При паузе в 1500 nop'ов=)) между отдельными передачами все нормально, пакеты не теряются. Но стоит эту пазу уменьшить(даже на немного) пакеты начинают теряться, вначале понемногу, при дальнейшем увелечении паузы вплоть до нуля получается что приходит ровно половина пакетов. С чем это может быть связано? При паузе 1500 скорость передачи получается крайне небольшой.
-=MISHA=-
Цитата(osminog @ Dec 7 2006, 17:49) *
А Delay во второй версии программы в цикле у вас есть? Просто вы наверное не совсем так меня поняли. У меня тоже настройки такие же только акнолиджи включены. При паузе в 1500 nop'ов=)) между отдельными передачами все нормально, пакеты не теряются. Но стоит эту пазу уменьшить(даже на немного) пакеты начинают теряться, вначале понемногу, при дальнейшем увелечении паузы вплоть до нуля получается что приходит ровно половина пакетов. С чем это может быть связано? При паузе 1500 скорость передачи получается крайне небольшой.


У меня установлена произвольная пауза.
Я посмотрел ваши исходники. Функция basicRfSendPacket немного отличается от чипконовской.

// Wait for the transmission to begin before exiting (makes sure that this function cannot be called
// a second time, and thereby cancelling the first transmission (observe the FIFOP + SFD test above).

FASTSPI_STROBE(CC2420_STXONCCA); <- этого нет.

while (!SFD_IS_1);
...

В функции инициализации паузы тоже отличаются.
Я отправил эти файлы. Сравните их с вашими.
Alexashka
можно посмотреть исходники?
у нас была похожая ситуевина с СС2431 (по сути это тот же 2420 только с 8051-м контроллером на борту). если после приема сразу идет команда послать пакет, то команда проходит нормально, но пакет не отсылается (нет генерации ВЧ сигнала)....пауза в несколько сот микросекунд перед посылкой пакета снимает эту проблему. Есть предположение, что это необходимая пауза для работы жесткой логики примопередатчика, но почему она не предусмотрена в мас-командах не известно. Вообщето, если сравнить эту задежржку с временем передачи 110-байтного пакета (100 байт данных+10 байт всяких заголовков унд прочих контрольных сумм), а это примерно 4 мс, то задержка в 300мкс вроде как и не существенна... smile.gif
kamedi_clab
спасибо !

только там atmega128 и AVR-GCC

Цитата(-=MISHA=- @ Dec 6 2006, 11:07) *
У меня cc2420 в связке с msp430 работает довольно долго. Был момент, когда обмен прекращался, но это я забыл премный буфер очистить.
Могу прислать свои исходники. Может помогут.


Положите СВОИ плиз если можно !
smart-realty
Цитата(kamedi_clab @ Jan 3 2007, 14:26) *
спасибо !

только там atmega128 и AVR-GCC

Цитата(-=MISHA=- @ Dec 6 2006, 11:07) *

У меня cc2420 в связке с msp430 работает довольно долго. Был момент, когда обмен прекращался, но это я забыл премный буфер очистить.
Могу прислать свои исходники. Может помогут.


Положите СВОИ плиз если можно !


Мои исходники Нажмите для просмотра прикрепленного файла

---
-=MISHA=-
kamedi_clab
Сенькаю вери мач.

хорошо бы схему еще - что куда подключено ... или машинку для закатывания губы.
Alexashka
Цитата(kamedi_clab @ Jan 3 2007, 23:34) *
Сенькаю вери мач.

хорошо бы схему еще - что куда подключено ... или машинку для закатывания губы.



В MAC-команде передачи (по крайней мере в CC2430) есть пауза в 1мс для получения значения RSSI на занятость/незанятость канала связи. При попытке ее уменьшить/убрать происходит зависание на какомто регистре передатчика - т.е. конечный автомат baseband виснет, если не получает корректное значение RSSI перед началом передачи. это первое, и второе- сразу после приема нельзя делать передачу- она просто не проходит, но тут задержку моожно сделать поменьше- 200-400мкс. Для скоростей zigbee с временем передачи пакета порядка нескольких мс это не так много имхо...
Энтомолог
Одной из причин маленькой дальности и кривого прохождения пакетов может быть рассогласование трансиверов по рабочей частоте, вызванное разбросом параметров кварцев и нагрузочных конденсаторов. Чем ниже скорость передачи и, соответственно, уже канал, тем опаснее этот эффект.

Так же следует отметить, что трансиверы на 2400 более чувствительны к изменению частоты опорного кварца чем, скажем, на 400 (при одинаковой ширине канала).

Я использую СС1020 в диапазоне 400МГц и этот эффект ощущается, особенно когда попадаются кварцы из разных партий. (Что такое китайский ватт многие, я думаю, знают, мегагерцы тоже, оказывается, китайскими бывают.) На 2400 сдвиг частоты при одинаковой погрешности кварцев будет в 3 с лишним раза больше. Но кварцы на 26МГц, как правило, хуже кварцев на 14, так что все будет еще хуже.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.