Инфа по трансиверу TR24

Тема в разделе "WASM.ELECTRONICS", создана пользователем a9d, 3 фев 2010.

  1. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    uCAM-232
     
  2. Kondor

    Kondor New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2010
    Сообщения:
    3
    к компу трансивер подключаеш через USB?
     
  3. tklim

    tklim New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2011
    Сообщения:
    7
    Смотрю, в исходниках значения для инициализации регистров взяты из даташита.
    А как насчет документа "EM198810 Application Notes. AN 0003 (06.18.2007). Register optimize value for EM198810" ?
    Там некоторые регистры отличаются значениями и их больше.
     
  4. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Да регистров там больше. Но если присмотреться там использованы регистры в которые писать нельзя. Они зарезервированы. Зачем их указали в рекомендованных значениях..хз. Но в эти регистрах значение не меняется.

    А в основном эти настройки похожи. Но от тех отказался из-за того что они показались мне "странными".
     
  5. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Сегодня провел испытания. На прямой видимости выдало 60-65 м без какого либо позиционирования.
    Трансиверами крутил, вертел и это ничего не дало.
     
  6. tklim

    tklim New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2011
    Сообщения:
    7
    Какой коэфициент ошибочных пакетов ?
    Конфигурация регистров как в последних исходниках или иная ?
    подключил два модуля к at90usb162. Лежат на столе в метре друг от друга, отправка 1000 пакетов:
    1->2:
    Код (Text):
    1. Ch:  6. Packets received: 992, CRC error:  1
    2. Ch:  6. Packets received: 989, CRC error:  0
    3. Ch:  6. Packets received: 994, CRC error:  0
    4. Ch:  6. Packets received: 993, CRC error:  0
    5. Ch:  6. Packets received: 989, CRC error:  0
    6. Ch:  6. Packets received: 988, CRC error:  1
    7. Ch:  6. Packets received: 991, CRC error:  0
    2->1:
    Код (Text):
    1. Ch:  6. Packets received: 984, CRC error: 63
    2. Ch:  6. Packets received: 977, CRC error: 56
    3. Ch:  6. Packets received: 981, CRC error: 43
    4. Ch:  6. Packets received: 974, CRC error: 45
    5. Ch:  6. Packets received: 975, CRC error: 46
    6. Ch:  6. Packets received: 982, CRC error: 44
    7. Ch:  6. Packets received: 978, CRC error: 47
    8. Ch:  6. Packets received: 975, CRC error: 53
    9. Ch:  6. Packets received: 976, CRC error: 52
    От длины пакета ничего не зависит...
     
  7. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Для инициализации использовал регичтры, что и в коде. Только FEC1/3 и программное CRC. Аппаратное CRC галимое.
    Процент потеряшек не знаю. Использовал протокол.
     
  8. tklim

    tklim New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2011
    Сообщения:
    7
    Сколько у кого ток потребелния в спящем режиме ?
    У меня получилось 8,5мка. Почти то что обещано (3,5мка). Отправка пакета сразу после сна без задержек проходит нормально.
     
  9. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Если хочешь достичь желанных 3,5мка, то читай назначение регистров. Перед входом в сон нужно сначала вырубить все, что только в нем выключается и усыпить. После вывести из сна и снова все повключать.
    В моем коде это не реализованно, но ничто не мешает это дописать.
     
  10. tklim

    tklim New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2011
    Сообщения:
    7
    Пробовал, что нашел. Только это либо не дает ничего, либо, наооборот, увеличивает ток, если например отключить RFIC. При чем потом придется сделать модулю ресет и заново инициализировать.
     
  11. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    В теории это должно работать. Хотя этот модуль наверняка разрабатывали индусы.
     
  12. tklim

    tklim New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2011
    Сообщения:
    7
    В общем, попробовал все что можно - 8мка - минимум. В принципе, сгодится. На длительное время для экономии стоит ключ на питании.
    Поигрался с кодировками и коррекцией ошибок. Осталось неясным, почему код 8/10 эффективнее манчестера. Все таки у манчестера избыточность в 1,6 раз больше.
    Так же не нашел что же не так с аппаратным CRC. Всегда при битом пакете бит CRC выставляется, а иногда и на корректном пакете .
     
  13. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Кодировку 8/10 я испытывал на растоянии 5м.
    Да этот трансивер вообще зачарованный. На сайте производителя(элан) битые ссылки на документацию.
    Также они не отвечают на какие либо вопросы.
     
  14. tklim

    tklim New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2011
    Сообщения:
    7
    Провел "полевые" испытания модулей.
    100м - на прямой видимости - только при определенной направленности антенн. Нормально принимается 1/10 пакетов.
    В морозилке при -18 работает, но надо выдерживать таймаут T1 при инициализации из аппноута в 5мс.
    По питанию: при 3,6 работает нормально. Больше - не доходят пакеты. Меньше - вообще отлично.
    Провел тест: плата atmega48pa + емкостный датчик влажности. Цикл: измерение-отправка пакета-усыпление модуля и контроллера раз в минуту. Питание: инонистор 1F. При начальном напряжении питания в 3,6В продержалось 18 часов. Модуль стабильно отправлял пакеты в плоть до 1,8В.
    Также вполне нормально происходит запуск при 2,4-2,5В, но статистику не собирал.
     
  15. Valeri4

    Valeri4 New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2011
    Сообщения:
    20
    Уважаемый a9d,
    Я только начал разбираться с девайсом. Скачал ваш протокол. Интересует пару моментов.
    1) Как модули знают на каком канале находится абонент?
    2) Есть ли возможность сделать хопинг между каналами(как в сети GSM)?
    3) Если можно ссылку или черкнуть пару строк как должна выглядеть main() функция к этим хидерам (последовательность запуска процедур)
    Спасибо.
     
  16. Valeri4

    Valeri4 New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2011
    Сообщения:
    20
    Я анализирую Ваш код (протокол) и не совсем понятен комментарий:
    //SPI::CSpi MySpi;
    //#include "tr24a.h"
    //TR24A::CTr24a MyTr;
    //SPEED::CSpeed MySpeed;

    Причем структура MySpi и MyTr часто используется, так же не совсем понятно что возвращает функция

    unsigned char GetPktFlag()
    {
    return !bit_is_clear(PIND,PIN_PKT);
    }//end GetPktFlag

    Спасибо :)
     
  17. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    2) Есть ли возможность сделать хопинг между каналами(как в сети GSM)?

    Если сделаешь, то будет возможно.

    1) Как модули знают на каком канале находится абонент?

    Задается в коде.


    http://forum.easyelectronics.ru/viewtopic.php?f=11&t=2584

    Тут есть код проекта.
     
  18. Valeri4

    Valeri4 New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2011
    Сообщения:
    20
    Ясно. Я портировал код вашего протокола на СVavr который к сожалению не знает что такое классы. Связь вроде бы есть. Пробовал устанавливать длину синхронизующего слова , трейлер и преамбулу, но лутший результат оказался без всего этого. я брал так d vtqy.
    Код (Text):
    1. main()
    2. {
    3. init_mega();   //инициализация чипа
    4. Init_tr24a();   //инициализация модуля
    5.  
    6. modeTX();   //режим тх
    7. SetPreambleL(2); //не улутшает связь
    8. SetSyncWL(2);  //не улутшает связь
    9. SetTrailer(2);   //не улутшает связь
    10.  
    11. while(1)
    12. {
    13. PkG_send(len, data); //отправили масив даных длиной лен.
    14. while  (getstate()!=0 );  //ждем пока модуль выйдет в идл мод.
    15. }
    Может что не так или не в том порядке?
    Кстати не могу усыпить чип. Слип мод не включается код:
    Код (Text):
    1. void modesleep(unsigned char mode)
    2. {
    3. DATA buf;  //убрал переменную дата и есть просто битовое поле и масив на два учара.
    4.  
    5. if(mode==0)
    6. {
    7. SS=1;
    8. reg_read(48); //читаем регистр, данные идут в глоб. переменные high и low
    9. buf.byte[1]=high;
    10. buf.byte[0]=low;
    11. //buf.data=read(48);
    12. buf.bitt.b2=1;  
    13. reg_write(48,buf.byte[1],buf.byte[0]); //пишем в регистр измененные данные
    14.  
    15. }
    16. else //или пробуждаем
    17. if(mode==1)
    18. {
    19. SS=0;
    20. delay_ms(2);
    21. SS=1;
    22. }
    23. }//end ModeSleep
    Вроде бы от Вашего варианта не сильно отличается а вот гетстейтом не показывает что заснул.
     
  19. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Код (Text):
    1. main()
    2. {
    3. init_mega();   //инициализация чипа
    4. Init_tr24a();   //инициализация модуля
    5.  
    6. modeTX();   //режим тх
    7. SetPreambleL(2); //не улутшает связь
    8. SetSyncWL(2);  //не улутшает связь
    9. SetTrailer(2);   //не улутшает связь
    10.  
    11. while(1)
    12. {
    13. PkG_send(len, data); //отправили масив даных длиной лен.
    14. while  (getstate()!=0 );  //ждем пока модуль выйдет в идл мод.
    15. }
    Незнаю, что ты хочешь добиться этим кодом. Почитай в интернете о преамбуле, синхрослове и трейлере. они предназначены для другого. Также почитай даташит, как я понял ты неправильно пакеты отправляешь.

    Код (Text):
    1. if(mode==0)
    2. {
    3. SS=1;
    4. reg_read(48); //читаем регистр, данные идут в глоб. переменные high и low
    5. buf.byte[1]=high;
    6. buf.byte[0]=low;
    7. //buf.data=read(48);
    8. buf.bitt.b2=1;  
    9. reg_write(48,buf.byte[1],buf.byte[0]); //пишем в регистр измененные данные
    на выводе SS активный ноль. Также возможно перепутал старшую и младшую часть.
    После входа в сон нельзя проверять состояние. Проверкой состояния ты его будишь. Это нужно мультиметром проверять.

    Также смени компилятор. Ты юзаешь полное Г.
     
  20. Valeri4

    Valeri4 New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2011
    Сообщения:
    20
    По первой части почитаю. Насчет неправильной отправки- если бы неправильно то ничего бы не принималось. А так прием идет. иногда проскакивают нули в пакете. Просто стоит ли игратся этими тремя параметрами или оно и по дефолту отлично идет.

    Компилятор конечно не супер. Просто в нем проще для не проф. програмиста -генератор кода, + доступ к любому пину через PORTХ.У а не какашку с битовыми операциями на пол строки. Хотя конечно дело вкуса и профессионализма. Я еще пробую на Винавр но там както сложнее выходит. :)