при компиляции сама прошивка меняется. в языках высокого уровня такого нет. но то ладно.
поменял я оба модуля - эффект тот же. три метра
пошел веревку искать. мыло вроде есть
какой микропроцессор используете?
могу переделать свою и скинуть точно рабочую минимальную прошивку для тестирования передатчика и приемника на rfm73 + atmega8.
конечно, если у вас есть в наличии atmega8.
хм... в таком случае могу порекомендовать только аккуратное поочередное выполнение инициализации и отправки команд с контролем логическим анализатором по spi. я так делал, когда хотел свою библиотеку написать, но терпения не хватило и понял, что лучше чем у немца не получится. и еще помните про путаницу в инициализации про младший или старший байт вперед.
у меня выходило 50 метров точно при прямой видимости. а если дальше, то через деревья и связь пропадала.
выкладываю архив с другим проектом для rfm73. я его почти не смотрел за ненадобностью, но, может, вы там найдете для себя.
если у вас есть логический анализатор Sealea Logic, то могу прислать снимок сигналов на spi при инициализации. там видно какие команды выполняются. так вы можете покомандно проследить весь ход процесса. если нет, то простым фотографированием окна программы.
сейчас подготовлю.
в архиве снимки spi приемника процесса инициализации банка 0 и 1.
по ним можно проследить весь процесс.
имена файлов в хронологическом поряке.
те, что с буквенным окончанием (a, b, c, d) фотографировал внахлест, потому что целиком не помещаются на экране.
команды выполняются на линии mosi
если нет логического анализатора, то я бы порекомендовал поочередный вывод содержимых регистров (тех, конечно, что позволяют себя читать) банка 0 и 1 на uart или, в крайнем случае на какой-нибудь порт с помощью команды R_REGISTER 000A AAAA. так можно проверить действительно ли записываются значения.
у меня никакой обвязки нет вообще. с батарейным питанием работает даже без конденсаторов.
и складывается такое впечатление, что у вас регистры не инициализируются совсем. (ведь без инициализации связь есть, но дальность не важная. сам не проверял, но пишут... "Надо сказать, что несмотря на то, что в даташите сказано эти регистры инициализировать определёнными значениями, если этого не делать и ничего не писать в банк 1, модуль всё работает, но несколько снижается дальность связи". http://we.easyelectronics.ru/part/radio ... rfm70.html).
глупый вопрос, но все же... перед отправкой команды при инициализации вы ведь прижимаете вывод CSN к земле (на графике с лог. анализатора она обозначена как "ENABLE")?
Последний раз редактировалось asylumist Пт май 16, 2014 18:40:50, всего редактировалось 1 раз.
тогда, скорее всего, есть ошибка в инициализации регистров банка 1. ведь там очень легко напортачить. мало того, что большинство из них не читаются, так и то, что одни надо писать старшим байтом вперед, а другие - младшим. проверьте еще и сверьте внимательно с исходником. так там еще и бубен!
вы говорите, что у вас не работает ACTIVATE 0x73.
может, проблема глубже и у вас не работает ACTIVATE вообще. в том числе и ACTIVATE 0x53 нужный для переключения банков.
тогда бы это объяснило то, что у вас не инициализируется банк 1 и маленькую дальность.
правда я не понимаю как может не работать команда, когда другие работают. и, кстати, почему вы решили, что ACTIVATE 0x73 у вас не работает?
банки переключаются, потому что это видно по биту 7 регистра STATUS
а ACTIVATE 0x73 не работает, потому что не модифицируются регистры FEATURE и DYNPD
может где-то тут собака порылась?
чтобы проверить действительно ли переключились в банк 1 можно прочитать восьмой регистр (chip id).
потому как мне все еще кажется, что переключения не происходит.
и если он все-же 0x00000063, то тогда где-то ошибка в инициализации.