Метценгерштейн
Aug 10 2015, 09:03
sd_app_event_wait();
Хочу девай в сон загнать. Вычитал, что этой ф-ей он гонится в сон. Но не понять систему- нужен хидер файл. Без него компилер не видит ф-ии. Как искать, какой хидер нужен? Где в документации указано, какой подключать?
Немного каша у меня.
kolobok0
Aug 10 2015, 09:26
Цитата(Метценгерштейн @ Aug 10 2015, 12:03)

...Как искать, какой хидер нужен? Где в документации указано, какой подключать?...
Либо толковую книгу = поход в книжный магазин, полистать, поискать, глазками глянуть (покупать не обязательно)
либо контекстный поиск по вашей файловой системе(если подразумевается что это барахло у вас на компе валяется)
либо поиск в гугле на соответствие название=файл...
согласитесь это элементарные шаги, которые можно решать самому...
ЗЫ
По первой ссылке есть архив проекта. Думаю он компилябельный...
тут встречается название вашей функции
Метценгерштейн
Aug 10 2015, 11:35
Вы не поняли вопрос.
Я знаю что такое хидеры и как и куда их включать. Вопрос в другом- какой именно хидер нужен? Где в документации сказано, что включите именно его? По ссылке я был еще до Вас. Ничего из моих вопросов нет.
Если Вы не занимались нордиком, то общие советы можно не давать- они просты.
Включать файл "nrf_soc.h". Можно было перейти к функции в нормальной IDE(find references или goto definition) или поискать определение по файлам, например через тоталкоммандер.
П.с. Эта функция не уводит устройство в сон, а только ядро АРМ. Вся остальная периферия продолжит работать и процессор проснётся по первому прерыванию.
Фактически в функции выполняется одна команда __WFE();
Для ухода в глубокий сон есть другие функции, например
sd_power_system_off(); - если используется SofDevice, или просто запись в регистр NRF_POWER->SYSTEMOFF = 1;
Метценгерштейн
Aug 11 2015, 12:03
Цитата(Defin @ Aug 10 2015, 22:13)

Включать файл "nrf_soc.h". Можно было перейти к функции в нормальной IDE(find references или goto definition) или поискать определение по файлам, например через тоталкоммандер.
П.с. Эта функция не уводит устройство в сон, а только ядро АРМ. Вся остальная периферия продолжит работать и процессор проснётся по первому прерыванию.
Фактически в функции выполняется одна команда __WFE();
Для ухода в глубокий сон есть другие функции, например
sd_power_system_off(); - если используется SofDevice, или просто запись в регистр NRF_POWER->SYSTEMOFF = 1;
вот, спасибо. Видно, что человек работает с нордиком.
Там фишка в том, что софтдевайс прошит отдельной прошивкой в др. область памяти. И, похоже, что именно только через эти хидеры происходит обращение к ф-ям софтдевайса. Все ф-ии SD... находятся в софтдевайсе. Обращение к ним через этот хидер.
Цитата(Метценгерштейн @ Aug 11 2015, 15:03)

вот, спасибо. Видно, что человек работает с нордиком.
Там фишка в том, что софтдевайс прошит отдельной прошивкой в др. область памяти. И, похоже, что именно только через эти хидеры происходит обращение к ф-ям софтдевайса. Все ф-ии SD... находятся в софтдевайсе. Обращение к ним через этот хидер.
Пожалуйста.
Функции, которые начинаются с sd_ требуют инициализированный и включенный softdevice, иначе вылет в assert, кроме пары штук, у них есть тело в файле .c.
А так, вся документация и SDK c примерами есть на сайте нордика
https://developer.nordicsemi.com/nRF51_SDKТолько нужно смотреть на ревизию чипа, последние версии SDK работают только с 3й ревизией чипа.
Метценгерштейн
Aug 12 2015, 09:29
еще вопрос по сну:
загнал его в сон ф-ей
sd_power_system_off();
он теперь на что реагирует? Разбудить его чем теперь?
Golikov A.
Aug 12 2015, 10:27
может мануалом его стукнуть или другой какой документацией?
Цитата(Golikov A. @ Aug 12 2015, 13:27)

может мануалом его стукнуть или другой какой документацией?
Вынужден согласиться с товарищем.
Ответ на все вопросы можно найти в документации, даташите и референс-мануале. Всё есть на сайте нордика.
Также в SDK есть примеры реализаций прошивок, например ble_app_hrs.
Касательно sd_power_system_off. Это уход в самый экономичный режим сна, без сохранения ОЗУ.
Проснуться можно по изменению логического уровня на каком-либо входе. Но его нужно предварительно настроить функцией nrf_gpio_cfg_sense_input.
Опять таки, всё можно подсмотреть в примерах.
Метценгерштейн
Aug 12 2015, 12:42
Спасибо за пояснения. Тут я на пути, как подступиться к этой самой документации. Пока только разбираюсь с системой документации. Буду там смотреть.
Еще раз спасибо за дельные ответы. Теперь уже можно что-то похожее искать как реализовано в примерах.
Метценгерштейн
Aug 18 2015, 09:59
не получается все-равно запустить проект
http://developer.nordicsemi.com/nRF51_SDK/...tml/a00075.htmlне видит мастер контрол панел, что новое устройство появилось.
Проц предварительно стер весь. Залил проект. Может надо отдельно софтдевайс в память заливать? Хотя нигде про это не сказано.
В проекте адреса флеша с 1600 начинаются. По идее, надо отдельно софтдевайс подгружать.
Не врублюсь, от куда его брать?
Софтдевайс отдельно заливается. Иначе даже отладчик(IAR) ругается на неправильный указатель на стэк.
Для S110 hex файл лежит в папке SDK \components\softdevice\s110\hex\
Залить можно просто скопировав в "диск" программатора.
При успешной прошивке, отладочник замигает светодиодом.
Метценгерштейн
Aug 18 2015, 14:44
хрень какая-то:
открыл проект в SDK 8.1.0
C:\...\NORDIC\SDK_8.1.0\examples\ble_peripheral\ble_app_cts_c\pca10028\s110\arm5_no_packs\ble_app_cts_c_s110_pca10028.uvprojx
загрузил софтдевайс из того же SDK через nRF Go Studio, предварительно стер флеш.
Заливаю проект кейлом, старт начинается с main()
все как буд - то нормально.
в main вызывается ф-я
ble_stack_init();
и там пропадает.
разве что-то забыл сделать еще?
уже в вечном цикле ничего не крутится.
Цитата(Метценгерштейн @ Aug 18 2015, 17:44)

Заливаю проект кейлом, старт начинается с main()
все как буд - то нормально.
в main вызывается ф-я
ble_stack_init();
и там пропадает.
разве что-то забыл сделать еще?
уже в вечном цикле ничего не крутится.
А на чем запускаете, на отладочнике nrf51dk? Если нет, то на чем и какая ревизия чипа(можно здесь написать полный текст с чипа, сам посмотрю).
Могу посоветовать пройтись под дебагом и узнать, что возращается в
err_code = sd_ble_enable(&ble_enable_params);
APP_ERROR_CHECK(err_code);
И вообще, на каком именно APP_ERROR_CHECK(err_code) валится, их полно в коде.
Также во время выполнения программы под отладкой, стоит поставить на паузу и посмотреть call stack.
Сам использую IAR, что и как в кейле не скажу, не нравится мне он.
Метценгерштейн
Aug 18 2015, 17:41
Спасибо. Завтра на работе подробно все посмотрю и скажу. Есть отладочная доска, есть отдельно процы спаянные. Доска PCA0006 вроде как.
Метценгерштейн
Aug 19 2015, 08:23
использую отдельный чип, спаянный на платке. Эти платки у нас работают уже как серийные. До сих пор не касался софтдевайса, работал с ним как с простым МК.
сам чип
N51822
GFAAG2
1429C0
пытаюсь уже и на SDK 6.1 примере работать. Не понятно софтдевайс какой и от куда лить? Залил s110_nrf51822_7.1.0_softdevice - нашел где-то у себя его.
вызывается ф-я
ble_stack_init();
в ней макрос
SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, false);
и в нем куда-то все пропадает.
Разбираюсь пока что с этим
http://clip2net.com/s/3mkH2oVвходит в ф-ю sd_softdevice_enable()
и там в недрах пропадает. уже на след. бряку не встает.
Цитата
сам чип
N51822
GFAAG2
1429C0
Согласно документу
https://www.nordicsemi.com/eng/nordic/downl...1917/8/91402025это вторая ревизия чипа, а значит самый "свежий" SDK это 6.1.0 и softdevice 7.1.0.
Цитата
пытаюсь уже и на SDK 6.1 примере работать. Не понятно софтдевайс какой и от куда лить? Залил s110_nrf51822_7.1.0_softdevice - нашел где-то у себя его.
На сайте есть версия softdevice 7.3.0, должна быть совместима(bugfix release), приложил к посту.
Надо будет только заменить h-файлы в папке SDK для S110 на новые из softdevice 7.3.0.
Т.е. нужно использовать SDK 6.1.0 и softdevice 7.3.0. Перед заливкой softdevice флеш лучше стереть.
Цитата
вызывается ф-я
ble_stack_init();
в ней макрос
SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, false);
и в нем куда-то все пропадает.
А кварц на 16МГц то есть? И желательно с точностью 20PPM
Цитата
Разбираюсь пока что с этим
http://clip2net.com/s/3mkH2oVвходит в ф-ю sd_softdevice_enable()
и там в недрах пропадает. уже на след. бряку не встает.
Надо бы поставить brealpoint в функции softdevice_assertion_handler
В общем, посмотрите внимательно на схему устройства, всё ли есть(можно и сюда приложить), и какая модель отладочника точно?
Также, если есть возможность, стоит заменить чипы на 3 ревизию, там снизили потребление и прочие улучшения.
Метценгерштейн
Aug 20 2015, 09:30
кварц на 16 МГц, этот модуль, что я использую- рабочий- он в других устройствах с BLE работает (не я писал)
у меня как-то не получается стартануть с ним.
http://clip2net.com/s/3moaGF0вот ф-я softdevice_assertion_handler
на бряку не встает программа. Т.е. это не еррор.
NRF_CLOCK_LFCLKSRC_XTAL_20_PPM
нужен 32768 kHz внешний кварц, если его нет - ничего не будет работать конечно
Если нет внешнего LF кварца используй что-то из
enum NRF_CLOCK_LFCLKSRCS (nrf_sdm.h)
Цитата(x893 @ Aug 21 2015, 06:57)

NRF_CLOCK_LFCLKSRC_XTAL_20_PPM
нужен 32768 kHz внешний кварц, если его нет - ничего не будет работать конечно
Если нет внешнего LF кварца используй что-то из
enum NRF_CLOCK_LFCLKSRCS (nrf_sdm.h)
Точно, low frequency кварц. Впрочем, он на плате PCA10006 есть. Может перемычки не стояли?
Всё может быть
NRF_CLOCK_LFCLKSRC_RC_250_PPM_8000MS_CALIBRATION
для проверки поставить
Метценгерштейн
Aug 22 2015, 20:32
Спасибо за идею дельную! В понедельник проверю на работе- отпишусь.
sevstels
Aug 30 2015, 07:07
Почитал не очень глубоко доку по nRF51822. И не нашел внятного ответа на вопрос, поддерживается ли чипом Dual-mode и будет ли нормально работать соединенение nRF51822 со стандартным BT модулем в компьютере?
Цитата(sevstels @ Aug 30 2015, 10:07)

Почитал не очень глубоко доку по nRF51822. И не нашел внятного ответа на вопрос, поддерживается ли чипом Dual-mode и будет ли нормально работать соединенение nRF51822 со стандартным BT модулем в компьютере?
Нет, чип не поддерживает двойной режим, только LE. А с поддержкой Dual-mode доступных нет SoC, только отдельный модуль без встроенного МК, например CC2564
sevstels
Aug 30 2015, 11:02
Те, тогда сконнектить с BT компьтера не получится?
А как же работают примеры использования nRF51822 для канала мышки и клавы?
Или они только как демка для LE<->LE?
Видел на Сахаре сообщение, коннектили и нормально работал обмен между стандартный BT и LE.
Но как то слабо верится, у меня не получилось.
С компьютером получится, если он или свисток поддерживает Bluetooth 4, т.е зависит от модуля.
Например, моему ноуту уже 2 года, но он отлично видит как LE устройства, так и обычные.
В центральные(central) устройства обычно ставят dual-mode контроллеры, так как нет жестких требований по экономии энергии(относительно, конечно).
Обычный блютуз и LE(single mode) не совместимы, на сахаре чего-то не договаривают.
sevstels
Aug 30 2015, 12:07
Цитата
>
Мы коннектили. Свой девайс был на блугиговском
модуле с CC2540 на борту. Донгл был такой же, как по ссылке у вас.
Работало очень хорошо. Лучше чем блугиговский донг
Донгл CSR 4.0 BLE не поддерживает. Более того, все попытки их насильно "поженить" вызывали крах firmware и зависание BLE до передёргивания питания. BLE сниффер пакеты с компьтера не видит, более того - по приёму стандартных пакетов, он "
умирает". Пробовал 6 разных донглов в том числе и встроенные BT 4.0 от ноута и от десктоп.
Цитата(sevstels @ Aug 30 2015, 15:07)

Донгл CSR 4.0 BLE не поддерживает. Более того, все попытки их насильно "поженить" вызывали крах firmware и зависание BLE до передёргивания питания. BLE сниффер пакеты с компьтера не видит, более того - по приёму стандартных пакетов, он "
умирает". Пробовал 6 разных донглов в том числе и встроенные BT 4.0 от ноута и от десктоп.
Погуглив CSR 4.0, оказалось, что он построен на чипе CSR8510 A10, открываю даташит:
http://www.csr.com/sites/default/files/csr8510.pdfИ там на второй строчке: Dual-mode Bluetooth/Bluetooth low energy operation. Т.е. он поддерживает как обычные блютузы, так и LE.
sevstels
Aug 30 2015, 13:58
Вероятно.. но мне не удалось приконнектить, видимо пока не хватает квалификации.
Хорошо, другой вопрос. Мне требуется классический BT и реализация некоторых HCI команд, описанных в BT спеке ver4.2 Те в версии 4.0 их ещё нет. Подскажите на каком кристалле это проще сделать? Чтоб был доступ к регистрам управления трансивером и возможность управления протоколом.
Цитата(sevstels @ Aug 30 2015, 16:58)

Хорошо, другой вопрос. Мне требуется классический BT и реализация некоторых HCI команд, описанных в BT спеке ver4.2 Те в версии 4.0 их ещё нет. Подскажите на каком кристалле это проще сделать? Чтоб был доступ к регистрам управления трансивером и возможность управления протоколом.
Доступ к регистрам то есть везде, главное чтобы были описаны в документации. Проблема в стеке Bluetooth.
Все стеки, с которыми я работал(TI, Nordic) закрыты, производитель поставляет только либы или hex + некоторую оболочку вокруг него.
Могу посоветовать поковырять SDK от какого-нибудь чипа TI CC256x и поспрашивать на их форуме/техподдержке.
По крайней мере, там отвечают их специалисты:
https://e2e.ti.com/support/wireless_connect.../f/660/t/387155
Метценгерштейн
Sep 3 2015, 13:57
проверил идею с кварцем- при инициализации установил
NRF_CLOCK_LFCLKSRC_RC_250_PPM_8000MS_CALIBRATION
и он в эфире появился!
Спасибо всем за подсказки! Будем дальше разбираться.
Метценгерштейн
Dec 6 2015, 11:14
вопрос по этому процу- минимум распаянный для того, чтобы программатор его увидел -какой?
Просто подключить программатор к процу и подать питание не получится? Т.е. без кварца.
Genadi Zawidowski
Dec 7 2015, 01:07
Получится без кварца. Два сигнала от SWD-DP достаточно.
sevstels
May 29 2016, 07:15
Никто не пробовал сформировать "классический" пакет на nrf51822 и передать?
Глубоко не вникая в скрытые нюансы, почитал документацию и очень похоже что можно.
Судя из их доки, единственный пункт который не получится "исправить" в классическую сторону- преамбула в 4 бита длиной. Она будет 8 бит, но для приемника это не существенно,тк прерывание Rx по совпадению синхрослова а не преамбулы.
Цитата
Никто не пробовал сформировать "классический" пакет на nrf51822 и передать?
А зачем? Какой в этом практический смысл?
sevstels
May 30 2016, 04:13
Смысл есть. В моей задаче нужно поддерживать взаимодействие как с классическими так и BLE устройствами. USB донгла, чтоб кристалл был дёшев и документация доступна так и не нашел. Или по доке всё вроде должно получиться, но на практике сталкиваешься с заморочками производителя чипа. TI например, вот где бестолковщины! Каждый отдел делал свою часть как хотел, исходя из женской логики. И не знал что делает соседний. Обещают, как бы "туманно", а в железке реализовать не получается.
Цитата
Обещают, как бы "туманно", а в железке реализовать не получается.
Это вы про CC2564? Она не работает в обоих режимах?
sevstels
May 30 2016, 09:13
Нет, CC2564 пока ещё не успел купить. Но всяких других уже - "мешок". Как истинно говорится: " Выбор толковый приходит с опытом, а к нему приводит выбор бестолковый." В общем, если никто не пробовал передать классический пакет из nrf51822, попробую, кит уже купил.
Цитата(sevstels @ May 30 2016, 12:13)

Нет, CC2564 пока ещё не успел купить. Но всяких других уже - "мешок". Как истинно говорится: " Выбор толковый приходит с опытом, а к нему приводит выбор бестолковый." В общем, если никто не пробовал передать классический пакет из nrf51822, попробую, кит уже купил.
А стек блютуза сами будете писать? У нордика исходники стека закрыты, предоставляют только hex-файл для заливки в чип и заголовочные файлы.
sevstels
May 30 2016, 12:16
Стек не нужен, он лишь усложняет дело, кастомный протокол.
Цитата(sevstels @ May 30 2016, 18:16)

Стек не нужен, он лишь усложняет дело, кастомный протокол.
Если "стек не нужен" и "кастомный протокол", то почему бы не взять простой RF-модуль на требуемый частотный диапазон и использовать его?
sevstels
May 30 2016, 12:55
Хороший вопрос.
У меня уже есть
рабочий вариант с BT-трансивер, который работает с классик и BLE. Но использовать его в масс-продакшен нельзя, тк можно легко "подсесть" на шину между RF и контролером для реверса. Что вскоре привлечет серьёзные проблемы со стороны желтоглазых братьев.
mantech
May 31 2016, 12:41
Цитата(sevstels @ May 30 2016, 15:55)

Хороший вопрос.
У меня уже есть
рабочий вариант с BT-трансивер, который работает с классик и BLE. Но использовать его в масс-продакшен нельзя, тк можно легко "подсесть" на шину между RF и контролером для реверса. Что вскоре привлечет серьёзные проблемы со стороны желтоглазых братьев.
Странно как-то говорите - есть проект на открытом стеке, вы его доработали существенно или написали свой, чтоб делать закрытым? Если нет, то какой смысл реверсить то, что и так открыто?
sevstels
May 31 2016, 12:59
О каком стеке вы говорите?
Если про ubertooth, то он использовался только изучения и отладки, хорошая платформа.
Исправив там огромное число ошибок, портировал его под IAR и под Win, это есть преступление?
sevstels
Dec 10 2016, 07:15
Появилось время заняться nrf51822.
Собрал примеры из последнего Nordik SDK (12.2), попробовал запустить с телефоном... и фиг вам! Не работает, никакие припарки и умные советы решить проблему не помогли. Пишу, чтоб начинающие долго не мучились, ведь Нордик (как впрочем и остальные BT-деятели) "скромно умалчивает" о
неработоспособности BLE с Android 5.
mantech
Dec 10 2016, 17:26
Цитата(sevstels @ Dec 10 2016, 10:15)

Пишу, чтоб начинающие долго не мучились, ведь Нордик (как впрочем и остальные BT-деятели) "скромно умалчивает" о неработоспособности BLE с Android 5.
Если с другими версиями работает и с компом тоже, так может это проблема не "Нордик (как впрочем и остальные BT-деятели)", а андроида 5?
У меня не было проблем с android 5. Телефон дешевый китайский за $100.
После обновления телефона до android 6 для полноценной работы BLE стало нужно включать геолокацию.
Мне кажется в 5-ой версии это не требовалось, хотя может уже и забыл.
sevstels
Dec 11 2016, 06:05
>> так может это проблема не "Нордик (как впрочем и остальные BT-деятели)", а андроида 5?
Вы наверно не читали или не поняли текст беседы.
Там именно это было и написано, ошибка GATT сервера BLE Android.
Но дело не в этом, а в том, что ни один мудак из Нордик или TI (зная о проблеме) не сообщил о ней пользователям в доке.
Покупайте и трахайте себе мозг... а мы весело над этим понаблюдаем. Вот такая позиция.
Но и не в этом дело! Оно оказалось еще смешнее.
Самсунг обмолвился, что эту модель обновлять до 6й версии не намерен.
О как! А только купил его пол года назад. Уроды...
sevstels
Dec 18 2016, 09:42
Сделал IAR порт scmRTOS для Nordic Semiconductor >
nRF51xДля тестов использовался кит >
BLE400, модуль с nrf51822QFAC на боту, (желателен xxAC), и >
O-Link-ARM.

Использование:
1. Открыть в IAR папку '3-channel' и выбрать файл проекта *.eww и откомпилировать.
2. Перед загрузкой в кристалл, запустить утилиту от Nordic "nRFgo Studio" и полностью его стереть.
Иначе если останется ранее зашитый китайцами стек, отладка может не запуститься.
Надеюсь проект поможет любителям scmRTOS и BLE.
Огромная благодарность Антону Гусеву, 'AHTOXA' за помощь в отладке порта.
Вы ее сделали ticlkess?
Я далек от С++ и не понял что делает функуция sleep.
Когда нет активности ядра и работает только RTC и активен блютуз стек потребление контроллера будет 4 мкА?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.