Модуль НС-12 (Si4463)

alfik777
alfik777 аватар
Offline
Зарегистрирован: 29.06.2015

Вопрос по режиму  Sleep в модуле НС-12. Изначально планировал на передатчике поставить дальнобойныій режим  FU4, а на приемнике энергосберегающий FU2. В этом режиме (FU2) потребление 80мка, что меня устраивало. НО! Неожиданно для меня оказалось, что приемник и передатчик не работают в разных режимах, а нужна и дальнобойность и малое потребление на приемнике. т.е. вариант один - работать в режиме FU4. Но потребление 16ма никак не устраивает. Смотрю в сторону SLEEP и обнаруживаю, что заснуть смогу, а  проснуться-то как?...Чтобы выйти из режима сна нужно послать AT-команду. Но... процессор тоже спит и, по логике, проснуться должен от RF-модуля, точнее от прихода  на модуль сигналов. Т.е. в случае инициатора сеанса связи все понятно, процессор  в зависимости от условий инициирует передачу, а как с приемником быть? Кто что подскажет?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Приемник может по обнаружению несущей подать сигнал прерывания процессору? Если да, то дело за малым: используем его как будильник МК, который уже пробуждает модуль. Если нет, то на микросхеме приемопередатчика si4463 есть выход nIRQ как понимаю для подачи прерывания в режиме приема, но лучше убедиться в даташите, сам смотрел уже давно и достаточно бегло. Подпаиваем к нему сигнал прерывания МК, который и будет его будильником.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

А впрочем, вот нашел http://html.alldatasheet.com/html-pdf/896667/SILABS/SI4463/657/3/SI4463.html, страница 22 "прерывания".

P.S. Не, в этом описании есть тольк отсылка к API производителя для детального описания работы с прерываниями и режимами..

alfik777
alfik777 аватар
Offline
Зарегистрирован: 29.06.2015

Я когда вопрос задавал, в глубине души именно на что-то подобное и надеялся - на  сигнал nIRQ  или что-то другое. Хотел уже на 11 ногу стать осциллографом, но всё довольно мелкое, вот и решил спросить может кто решал уже подобную проблему.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Там корпус "неудобный" чтобы на ногу встать .. если нога не распаяна, то вообще "труба". А так - пробуйте. Вешать приемник в sleep() за экономией батарейки, кроме Вас оно похоже никому не надо. Там "умный" приемопередатчик .. разве что взрывное устройство на ожидание вешать. :)

alfik777
alfik777 аватар
Offline
Зарегистрирован: 29.06.2015

Ну  а как иначе? -приходится экономить батарейку, 16ма потребление при FU4. Сейчас в приемнике  стоят 3 шт. CR44, их при таком потреблении, наверное, и на сутки не хватит. Как вариант, уже рассматриваю использовать 18650 с подзарядкой, так  как что-то сомнения у меня на счет сигнала nIRQ. Допустим я физически подберусь к ноге -  она соединена с процессором, а  к STM уже не сложно прикрутиться. Но если даже там будут какие то изменения при приходе данных, то, во первых, на этих частотах там мусор сплошной,ну это ладно, а во вторых, пока проснется мой CPU, пока он переведет модуль в режим приема команд, пока пошлет ему AT-команду, пока вернет назад из командного режима,  то все данные вероятно уже потеряны будут? 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Не знаю. У меня 3S 18650 х 3400мАч хватало на 2-3х дневные покатушки роботу по линии на тренировках по часа 3-4 в день .. это ИК-линейка датчиков с суммарным потреблением 150мА + пара моторов до 3 ампер на старте каждый .. Что такое 16ма? Для такой батареи это 212 часов непрерывной работы, или почти 9 суток.

Насколько оперативно должон просыпаться "модуль" .. сильно зависит от ПРОТОКОЛА приема-передачи .. Вы хотите принимать что-то свое? Ну так и обеспечьте соответствующие паузы от начала передачи до её существенной части: подали несущую, подождали сколько надо, начали передавать команды. Или заполняете паузу повторной передачей команд..

Или Вы хотите подслушивать типовые протоколы (брелки там или ещё чего)? Тогда да, они ничего не предполагают за "ожидание" пока ваш слухач глазки протрет.. часто даже наоборот делают, как раз против таких вот "слушателей".

К сожалению, Вы не указали назначение модуля у Вас, вот и приходится гадать на кофейных гущах.

alfik777
alfik777 аватар
Offline
Зарегистрирован: 29.06.2015

Ну да, я передаю своё, т.е., в принципе, могу передавать мусор некоторое время пока все не проснутся на приемной стороне.  

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Тогда правильнее организовать "дуплекс": начинаете передачу "свистком", и периодически слушаете "проснулась ли плата". После чего уже передаете то что надо. Плата по просыпанию делает свой свисток "ожила", который периодически и слушает передатчик. Как-то так, наверное.

alfik777
alfik777 аватар
Offline
Зарегистрирован: 29.06.2015

Похоже, идея с прерыванием не имеет право на жизнь. Тыкнулся осциллографом на nIRQ - при приходе данных на вход мудуля уровень nIRQ изменяется на единичку, вроде как всё  красиво, только вот когда он в режиме SLEEP, то он по-честному спит- никаких изменений. По логике,  наверное, так и должно быть. Посему, придется всё переделывать под батареи 18650:-(

alfik777
alfik777 аватар
Offline
Зарегистрирован: 29.06.2015

В продолжение о режиме SLEEP. Начал играться с этим режимом - заснуть- проснуться, и не всё гладко - то не засыает, то не просыпается. По DS после перехода сигнала SET "0" (режим команд) необходима пауза 40мс, после  перехода в нормальный режим SET=1  нужно выдержать паузу 80мс. В общем, как я понял, эти задержки для скорости 9600. Я же для дальности связи использую 1200. и продолбавшись 2 дня  добился нормальной работы с режимом SLEEP только после установки задержек по 800 мс после изменения сигнала SET. Возможно кому то пригодится информация.