Si4431 library
  • Доброго дня!
    Купил недавно DRF4431F27, но из софта под ардуину нашел только ваши библиотеки. У меня Nano 328, но скетчи компилируются только под 168 :о(
    Не подскажете - где что поправить?
  • Собсно, вот ошибки:

    In file included from Si4431slave.cpp:2:
    C:\Users\rav\Desktop\arduino-1.0.1\libraries\SI4431/SI4431.h: In static member function 'static void SI4431Class::nIRQWait()':
    C:\Users\rav\Desktop\arduino-1.0.1\libraries\SI4431/SI4431.h:82: error: 'PB1' was not declared in this scope
    C:\Users\rav\Desktop\arduino-1.0.1\libraries\SI4431/SI4431.h: In static member function 'static u8 SI4431Class::IRQstate()':
    C:\Users\rav\Desktop\arduino-1.0.1\libraries\SI4431/SI4431.h:87: error: 'PB1' was not declared in this scope
    Si4431slave.cpp: In function 'void setup()':
    Si4431slave:99: error: 'PD4' was not declared in this scope
    Si4431slave.cpp: In function 'void loop()':
    Si4431slave:139: error: 'PD2' was not declared in this scope
    Si4431slave:140: error: 'PD3' was not declared in this scope
    Si4431slave:161: error: 'PD3' was not declared in this scope
  • Приятно поговорить с умным человеком... На свой вопрос - отвечаю:
    Необходимо заменить PB1...PB5 на PORTB1...PORTB5 и PD1...PD5 на PORTD1...PORTD5 в скетчах и Si4431.*
    Ошибки при компиляции исчезают. Работают ли полученные программы - пока не знаю :о)
    Попробую - отпишусь.
  • Добрый день!

    Да, нужно проверить соответствие названия портов у Atmega328 и Atmega168.
    Для наглядности, смотрите принципиальную схему как подключено на Колибри. И в соответствии со схемой, перепишите под Atmega328.
  • Спасибо за совет, Иван!
    Проверил подключение по вот этой схеме: http://cdn.instructables.com/FR9/7029/H4B2N7DQ/FR97029H4B2N7DQ.LARGE.jpg
    Но легче что-то не стало... Такое впечатление, что модуль вообще мертвый. Вот, что ардуина выдает в вывод:
    Hello!
    Reg:0, FF
    Reg:1, FF
    Reg:2, FF
    Reg:3, FF
    Reg:4, FF
    Reg:5, 0
    Reg:
    Hello!
    Hello!
    Hello!
    Reg:0, 0
    Reg:1, 0
    Reg:2, FF
    Reg:3, FF
    Reg:4, FF
    Reg:5, FF
    Reg:6, FF
    Reg:
    Hello!
    Hello!
    Hello!
    Hello!
    Hello!
    Hello!
    Hello!
    Reg:0, FF
    Reg:1, FF
    Reg:2, FF
    Reg:3, FF
    Reg:4, FF
    Reg:5, FF
    Reg:6, FF
    Reg:
    Hello!
    Reg:0, FF
    Reg:1, FF
    Reg:2, FF
    Reg:3, FF
    Reg:4, FF
    Reg:5, FF
    Reg:
    Hello!
    Hello!

    "Hello" - это она после кнопки "ресет" говорит....
  • Какая у вас схема подключения?

  • Вот такая:
    image
  • По схеме все верно.
    Модули мертвыми редко когда бывают. Возможно косяк либо в подключении, либо в коде.

    А вы точно порты под atmega328 правильно переписали?
    Попробуйте одним из переписанных портов "помигать".
  • Угу. Тем более - оба сразу...
    Помигать, в смысле - подцепить тестовый диод на то, что подразумевается, например, PORTB2 и подергать high/low?
  • onliner said:

    Помигать, в смысле - подцепить тестовый диод на то, что подразумевается, например, PORTB2 и подергать high/low?


    Да

  • поправил файл SI4431.h:


    #define PORTB1 9
    #define PORTB2 10
    #define PORTB3 11
    #define PORTB4 12
    #define PORTB5 13
    #define PORTB0 8
    Проверил морганием - моргало правильно.
    Но легче не стало :о( Все равно не работает:

    Hello!
    Hello!
    Reg:0, FF
    Reg:1, FF
    Reg:2, FF
    Reg:3, FF
    Reg:4, FF
    Reg:5, FF
    Reg:6, FF
    Reg:
    Hello!
    Hello!
    Reg:0, FF
    Reg:1, FF
    Reg:
    Hello!
    Hello!
    Hello!
    Hello!
    Hello!
    Hello!
    Reg:0, FF
    Reg:1, FF
    Reg:2, FF
    Reg:3, FF
    Reg:4, FF
    Reg:
  • покажите весь ваш исправленный код, проверим.
  • Не знаю как тут файл приложить... Могу на почту выслать? Вот моя: on-liner()mail.ru
    Я, вот, думаю - а этот код с моим модулем (DRF4431F27) вообще должен работать?
  • Пришлите ваши исправления на наш email (смотрите на странице контактов).
    Если DRF4431F27 полностью идентичен SI4431 - то работать должен.
  • Угу, выслал. Вот еще тут можно: http://files.mail.ru/DMO1HJ
  • Адаптация библиотеки SI4431 под ATmega328
    1) Скачайте оригинальную библиотеку SI4431
    2) В файле SI4431.h после строки #define DD_SS PB2 добавьте:
    #define PD4 (4)
    #define PD3 (3)
    #define PD2 (2)
    #define PB1 (1)
    #define PB3 (3)
    #define PB5 (5)
    #define PB2 (2)

    Сохраните файл.

    После этого скетчи без ошибок должны компилироваться под ATmega328.
    По идее, DRF4431F27 должен заработать.
  • Ура!
    Иван, вы волшебник:

    Hello!
    Reg:0, 0
    Reg:1, 0
    Reg:2, 0
    Reg:3, 0
    Reg:4, 0
    ...........................Не буду все перечислять
    Reg:7E, A
    Reg:7F, A
    Radio initialisation is OK

    Спасибо огромное! :о)

Привет, незнакомец!

Похоже, вы новенький! Чтобы пообщаться с нами, кликните на одну из кнопок ниже :)

Войти с помощью OpenID

В этом теме: