Перейти к содержанию
    

sd_app_event_wait();

 

Хочу девай в сон загнать. Вычитал, что этой ф-ей он гонится в сон. Но не понять систему- нужен хидер файл. Без него компилер не видит ф-ии. Как искать, какой хидер нужен? Где в документации указано, какой подключать?

Немного каша у меня.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Как искать, какой хидер нужен? Где в документации указано, какой подключать?...

 

Либо толковую книгу = поход в книжный магазин, полистать, поискать, глазками глянуть (покупать не обязательно)

либо контекстный поиск по вашей файловой системе(если подразумевается что это барахло у вас на компе валяется)

либо поиск в гугле на соответствие название=файл...

 

согласитесь это элементарные шаги, которые можно решать самому...

 

 

ЗЫ

По первой ссылке есть архив проекта. Думаю он компилябельный...

тут встречается название вашей функции

Изменено пользователем kolobok0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы не поняли вопрос.

Я знаю что такое хидеры и как и куда их включать. Вопрос в другом- какой именно хидер нужен? Где в документации сказано, что включите именно его? По ссылке я был еще до Вас. Ничего из моих вопросов нет.

Если Вы не занимались нордиком, то общие советы можно не давать- они просты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Включать файл "nrf_soc.h". Можно было перейти к функции в нормальной IDE(find references или goto definition) или поискать определение по файлам, например через тоталкоммандер.

 

П.с. Эта функция не уводит устройство в сон, а только ядро АРМ. Вся остальная периферия продолжит работать и процессор проснётся по первому прерыванию.

Фактически в функции выполняется одна команда __WFE();

 

Для ухода в глубокий сон есть другие функции, например

sd_power_system_off(); - если используется SofDevice, или просто запись в регистр NRF_POWER->SYSTEMOFF = 1;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Включать файл "nrf_soc.h". Можно было перейти к функции в нормальной IDE(find references или goto definition) или поискать определение по файлам, например через тоталкоммандер.

 

П.с. Эта функция не уводит устройство в сон, а только ядро АРМ. Вся остальная периферия продолжит работать и процессор проснётся по первому прерыванию.

Фактически в функции выполняется одна команда __WFE();

 

Для ухода в глубокий сон есть другие функции, например

sd_power_system_off(); - если используется SofDevice, или просто запись в регистр NRF_POWER->SYSTEMOFF = 1;

 

вот, спасибо. Видно, что человек работает с нордиком.

Там фишка в том, что софтдевайс прошит отдельной прошивкой в др. область памяти. И, похоже, что именно только через эти хидеры происходит обращение к ф-ям софтдевайса. Все ф-ии SD... находятся в софтдевайсе. Обращение к ним через этот хидер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот, спасибо. Видно, что человек работает с нордиком.

Там фишка в том, что софтдевайс прошит отдельной прошивкой в др. область памяти. И, похоже, что именно только через эти хидеры происходит обращение к ф-ям софтдевайса. Все ф-ии SD... находятся в софтдевайсе. Обращение к ним через этот хидер.

Пожалуйста.

Функции, которые начинаются с sd_ требуют инициализированный и включенный softdevice, иначе вылет в assert, кроме пары штук, у них есть тело в файле .c.

 

А так, вся документация и SDK c примерами есть на сайте нордика https://developer.nordicsemi.com/nRF51_SDK

Только нужно смотреть на ревизию чипа, последние версии SDK работают только с 3й ревизией чипа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще вопрос по сну:

загнал его в сон ф-ей

sd_power_system_off();

 

он теперь на что реагирует? Разбудить его чем теперь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может мануалом его стукнуть или другой какой документацией?

 

Вынужден согласиться с товарищем.

 

Ответ на все вопросы можно найти в документации, даташите и референс-мануале. Всё есть на сайте нордика.

Также в SDK есть примеры реализаций прошивок, например ble_app_hrs.

 

Касательно sd_power_system_off. Это уход в самый экономичный режим сна, без сохранения ОЗУ.

Проснуться можно по изменению логического уровня на каком-либо входе. Но его нужно предварительно настроить функцией nrf_gpio_cfg_sense_input.

Опять таки, всё можно подсмотреть в примерах.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за пояснения. Тут я на пути, как подступиться к этой самой документации. Пока только разбираюсь с системой документации. Буду там смотреть.

Еще раз спасибо за дельные ответы. Теперь уже можно что-то похожее искать как реализовано в примерах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не получается все-равно запустить проект

http://developer.nordicsemi.com/nRF51_SDK/...tml/a00075.html

 

не видит мастер контрол панел, что новое устройство появилось.

 

Проц предварительно стер весь. Залил проект. Может надо отдельно софтдевайс в память заливать? Хотя нигде про это не сказано.

 

В проекте адреса флеша с 1600 начинаются. По идее, надо отдельно софтдевайс подгружать.

Не врублюсь, от куда его брать?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Софтдевайс отдельно заливается. Иначе даже отладчик(IAR) ругается на неправильный указатель на стэк.

Для S110 hex файл лежит в папке SDK \components\softdevice\s110\hex\

Залить можно просто скопировав в "диск" программатора.

 

При успешной прошивке, отладочник замигает светодиодом.

Изменено пользователем IgorKossak
бездумное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хрень какая-то:

 

открыл проект в 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();

и там пропадает.

 

разве что-то забыл сделать еще?

 

уже в вечном цикле ничего не крутится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заливаю проект кейлом, старт начинается с 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, что и как в кейле не скажу, не нравится мне он.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. Завтра на работе подробно все посмотрю и скажу. Есть отладочная доска, есть отдельно процы спаянные. Доска PCA0006 вроде как.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...