дак исходники то на Си !slimm писал(а):Апноуты на ti.com заточены под c8051f320, я же не могу привязать трансивер к ATMega8. не хватает знаний и времени
трансивер chipcon cc1100
- Реклама
Граждане, убъюсь скоро с этим чипконом (
На передачу работает, на приём, ни в какую, уже и так и эдак перепробовал, подскажите в чём может быть ошибка в коде???
вызываю так
Заранее -=Спасибо=- за помощь )
На передачу работает, на приём, ни в какую, уже и так и эдак перепробовал, подскажите в чём может быть ошибка в коде???
Код: Выделить всё
char RFReceivePacket(char *rxBuffer, char len)
{
char status[2];
char pktLen;
SPIStrobe(CC1100_SRX);
// while (!TESTBIT( PINC, GD0 ));
// while (TESTBIT( PINC, GD0 ));
if ((SPIReadStatus(CC1100_RXBYTES) & CC1100_NUM_RXBYTES)) // CC1100_NUM_RXBYTES = 0x7F
{
pktLen = SPIReadReg(CC1100_RXFIFO);
if (pktLen <= len)
{
SPIReadBurstReg(CC1100_RXFIFO, rxBuffer, pktLen);
len = pktLen;
SPIReadBurstReg(CC1100_RXFIFO, status, 2);
return (char)(status[CC1100_LQI_RX]&CC1100_CRC_OK); // CC1100_CRC_OK = 0x80
}
else
{
len = pktLen;
SPIStrobe(CC1100_SFRX);
return 0;
}
}
else return 0;
}
Код: Выделить всё
if (RFReceivePacket(rxBuffer, 40)) {...}
Код: Выделить всё
- Сообщения: 1
- Зарегистрирован: Сб май 14, 2011 15:31:13
Помогите разобраться как подключаются, общаются АМR128 с ММсс1100. Там инструкция на польском и не понятно как перевести название портов GDO0 и GDO2.http://radiokot.ru/forum/posting.php?mo ... f=2&t=1108#
- Сообщения: 2
- Зарегистрирован: Пт авг 24, 2012 12:34:27
Снова подниму эту тему.
Возникла проблема с трансивером СС1100, а решение никак не ищется.
Вкратце опишу суть проблемы. Использую готовый модуль PAN2355 (868MHz) и контроллер ATmega16L. Антенна выполнена в виде провода на четверть длины волны. Библиотеку взял стандартную и доработал под свои нужды.
Конфигурация трансивера проходит нормально (наблюдал с помощью осциллографа): регистры пишутся и читаются, командный строб тоже проходит и в статусном байте вижу, что трансивер перешел в нужный мне режим. Чудеса начинаются, когда я пишу в TX_FIFO. Дело в том, что при записи данных в буфер передатчика на вход SI (slave input) возвращается статусный бит, младшие 4 бита которого повествуют о заполненности TX_FIFO. Так вот! Сколько бы я не пихал байтов в буфер передатчика, счетчик буфера говорит, что ничего там не лежит. Пробовал писать единичный байт по адресу 3F - пусто. Пробовал запихивать последовательность по адресу 40 - та же чертовщина. При этом записанные данные с успехом мною читаются, что так же наблюдал на осцилле. Получается, что по факту я данные записал, а железка утверждает, что она пустая.
Тут может быть два варианта: либо баг в программе, либо я чего-то не допонял с адресным пространством и пищу не по тому адресу. Склоняюсь ко второму варианту, поэтому код пока не выкладываю. Если понадобиться - выложу следующим постом. будем убивать траблы вместе
И еще одна непонятность! Переключив трансивер в режим TX, ничего на антенне я не наблюдаю: ни данных (хотя тут все понятно: какие к черту данные, если в буфере ничего нет), ни циклически следующих заголовков (соответствующий регистр сконфигурирован на то, что в отсутствии данных в буфере, ресивер будет оставаться в режиме ТХ и постоянно слать заголовок).
Голову почти уже сломал, поэтому обращаюсь к тем, кто уже работал с данным типом приемопередатчиков. Заранее спасибо откликнувшимся.
Возникла проблема с трансивером СС1100, а решение никак не ищется.
Вкратце опишу суть проблемы. Использую готовый модуль PAN2355 (868MHz) и контроллер ATmega16L. Антенна выполнена в виде провода на четверть длины волны. Библиотеку взял стандартную и доработал под свои нужды.
Конфигурация трансивера проходит нормально (наблюдал с помощью осциллографа): регистры пишутся и читаются, командный строб тоже проходит и в статусном байте вижу, что трансивер перешел в нужный мне режим. Чудеса начинаются, когда я пишу в TX_FIFO. Дело в том, что при записи данных в буфер передатчика на вход SI (slave input) возвращается статусный бит, младшие 4 бита которого повествуют о заполненности TX_FIFO. Так вот! Сколько бы я не пихал байтов в буфер передатчика, счетчик буфера говорит, что ничего там не лежит. Пробовал писать единичный байт по адресу 3F - пусто. Пробовал запихивать последовательность по адресу 40 - та же чертовщина. При этом записанные данные с успехом мною читаются, что так же наблюдал на осцилле. Получается, что по факту я данные записал, а железка утверждает, что она пустая.
Тут может быть два варианта: либо баг в программе, либо я чего-то не допонял с адресным пространством и пищу не по тому адресу. Склоняюсь ко второму варианту, поэтому код пока не выкладываю. Если понадобиться - выложу следующим постом. будем убивать траблы вместе
И еще одна непонятность! Переключив трансивер в режим TX, ничего на антенне я не наблюдаю: ни данных (хотя тут все понятно: какие к черту данные, если в буфере ничего нет), ни циклически следующих заголовков (соответствующий регистр сконфигурирован на то, что в отсутствии данных в буфере, ресивер будет оставаться в режиме ТХ и постоянно слать заголовок).
Голову почти уже сломал, поэтому обращаюсь к тем, кто уже работал с данным типом приемопередатчиков. Заранее спасибо откликнувшимся.
- Реклама
Приёмная сторона значит тоже ничего не принимает?
Кто может подсказать, нормально ли, что у CC1101 ошибки довольно часто проходят при передаче?
при использовании аппаратного синхрослова вообще через раз принимает, а без него принимает всякую лажу вместо того, что отправил, у RFM12 гораздо стабильнее связь наблюдал, может это быть из за настроек неправильных? могу выложить свои, если есть смысл
Кто может подсказать, нормально ли, что у CC1101 ошибки довольно часто проходят при передаче?
при использовании аппаратного синхрослова вообще через раз принимает, а без него принимает всякую лажу вместо того, что отправил, у RFM12 гораздо стабильнее связь наблюдал, может это быть из за настроек неправильных? могу выложить свои, если есть смысл
- Сообщения: 2
- Зарегистрирован: Пт авг 24, 2012 12:34:27
С заполнением буфера передатчика разобрался. Как я и думал, дело было не в бабине. Подучил матчасть, разобрался. Оказалось все вполне очевидно: младшие четыре бита показывают (если так можно выразиться) последние пятнадцать свободных байт буфера. Как только мы заполняем буфер 49 байтами включительно, то каждый последующий байт отображается в статусном сообщении.
С сигналом на выходе тоже прояснилось. В прошлый раз "щупал" сигнал осциллом с полосой пропускания 400МГц в полной уверенности, что я там хоть что-то увижу. И с чего я это взял?! А на прошлой неделе в мои руки попал осциллограф с полосой пропускания 1ГГц. В общем, сигнал на выходе присутствует.
Теперь буду пробовать непосредственно связать два трансивера. Посмотрим, что из этого получится...
С сигналом на выходе тоже прояснилось. В прошлый раз "щупал" сигнал осциллом с полосой пропускания 400МГц в полной уверенности, что я там хоть что-то увижу. И с чего я это взял?! А на прошлой неделе в мои руки попал осциллограф с полосой пропускания 1ГГц. В общем, сигнал на выходе присутствует.
Теперь буду пробовать непосредственно связать два трансивера. Посмотрим, что из этого получится...


