Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NORDIC nrf51822
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
sevstels
Это лишь "сырой" шаблон проекта для быстрого запуска RTOS на nRF51x.
Ввиду некоторых особенностей ядра nRF стандартный порт Cortex-M0 там не пошел.

>> что делает функуция sleep
Она останавливает в данной точке выполнение текущего процесса на заданное число тиков системного таймера.
Если sleep без аргументов, то останавливает перманентно. Посмотрите плиз доку на scmRTOS.

>> только RTC и активен блютуз стек потребление контроллера будет 4 мкА?
Пока не тестил, но препятствий не вижу. Можно остановить периферию и переключать процессы по нужным вам событиям.




uriy
Цитата
Она останавливает в данной точке выполнение текущего процесса на заданное число тиков системного таймера.
Вот это я и хотел узнать, какой таймер используется.
С системным таймером вы не получите 4 мкА. У вас получается во время выполенния sleep() работает ядро и вероятно возникают прерывания каждую миллисекунду (ну или какой там у вас тик).
Например, если в этом варианте делать мигание светодиодом длительностью 100 мсек каждые 10 сек, то даже в паузе 10 сек будет работать ядро.
В планировщике, который идет вместе с NRF, таймеры работают через RTC.
Их стек настроит RTC на пробуждение через 10 сек. И пока оно ничего не делает ток будет 4 мкА.
Ну плюс на адвертайзы будет просыпаться если они у вас включены.

sevstels
>> во время выполенния sleep() работает ядро

Тики таймера сейчас сделаны для проверки работоспособности порта.
Никто не мешает их выключить и не использовать системный таймер. Отключите его в конфиге rtos.
Затем в обработчик вашего события от стека добавьте установку флага события. В сам процесс добавьте ожидание этого события.
И будут вам желаемые 4мкА...

Дело вкуса, я привык к scmRTOS, он серьёзно упрощает написание кода.
У меня сделан всего 1 усечённый пример, чтоб не создавать дополнительные трудности.
Тут можно посмотреть > полные версии примеров использования.
uriy
Цитата
Тут дело вкуса, я привык к scmRTOS, серьёзно упрощает написание кода.
Это точно дело вкуса.
В основном пользуюсь FeeRTOS. Пытался сделать проект на BlackFin с scmRTOS. Не осилил С++.
Мне очень понравился свой планировщик у NRF.
Чем он вам не понравился?
Я даже перенес его на STM8L для одного проекта.
С проблемами конечно, но работает.
sevstels
>> С проблемами конечно, но работает.
Мне не нужны проблемы, их и так хватает. Поэтому - scmRTOS.
uriy
Померяйте тогда ток в режиме мигания светодиодом, например.
На мой взгляд высокое потребление BLE это и есть самая большая проблема.
sevstels
Смогу дальше с этим работать только через неделю.
Пока на другом проекте.. sm.gif
jcxz
Цитата(sevstels @ Dec 19 2016, 10:00) *
Тики таймера сейчас сделаны для проверки работоспособности порта.
Никто не мешает их выключить и не использовать системный таймер. Отключите его в конфиге rtos.
Затем в обработчик вашего события от стека добавьте установку флага события. В сам процесс добавьте ожидание этого события.
И будут вам желаемые 4мкА...

Всё то же самое, я думаю, можно сделать и на любой другой RTOS.
Например под uCOS - без проблем: SysTick можно заменить на любой другой таймер или вообще его отключить. Это вообще дело порта и не входит в ядро uCOS.
uriy
Понятно что можно.
Но за пару минут вы это не сделаете если ОС из коробки не поддерживает режим работы без периодических тиков.
Ведь надо пересчитывать очередь таймеров для настройки RTC после каждого пробуждения.
В очереди первым надо выставлять таймер, который досчитает раньше всех.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.