Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Железо для умного дома

ТЕМА: Прошивка NRF24le1

Прошивка NRF24le1 17 Авг 2017 15:50 #19466

  • fixxxer
  • fixxxer аватар
  • Не в сети
  • Новый участник
  • Сообщений: 11
  • Спасибо получено: 3
  • Репутация: 1
loginkr пишет:
Спасибо за подсказки.

Все же интересно как тогда в конструкторе работает и счетчик и memory retention.

Можете поделиться кодом ?
Всегда пожалуйста. :)

Счетчик и memory retention работают и у меня. Да и у Вас должен работать. Правда вот тут
			if(sleep_counter<0){
				sleep_counter = 0;
			}else{
				sleep_counter++;	
			}
я что-то не понял, как sleep_counter станет меньше нуля.
Что могу еще сказать - при использовании memory retention Вам не нужен основной цикл while(1) {...}. Программа в любом случае завершится на pwr_clk_mgmt_enter_power_mode_memory_ret_tmr_on(), а при просыпании запустится сначала. А для того, чтобы определить, после какого режима она запустилась, есть регистр PWRDWN. После memory retention timers on младшие 3 бита будут 011. А раз за энергопотребление боритесь - конфигурируйте радио только если есть, что передавать. Если проснулись, проверить счетчик и снова уснуть - ничего больше и не делайте.

А вот как оно работает в конструкторе и какой там код - не подскажу, так как сам не знаю. :) Я писал код для nrf24le1 под свой проект мониторинга погодных условий снаружи и внутри помещения.

Может, попросим автора (Adminhs, просим! :) ) поделиться кодом, который генерирует конструктор для варианта c memory retention?
Последнее редактирование: 17 Авг 2017 15:52 от fixxxer.
Администратор запретил публиковать записи гостям.
Спасибо сказали: loginkr

Прошивка NRF24le1 17 Авг 2017 15:53 #19467

  • loginkr
  • loginkr аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Сообщений: 24
  • Спасибо получено: 1
  • Репутация: 0
fixxxer пишет:
loginkr пишет:
Правда вот тут

У меня в счетчике каждый раз разные значение попадались(после первого запуска , затем инкримент этого значения) , просто рандом. Решил перестраховаться
Администратор запретил публиковать записи гостям.

Прошивка NRF24le1 17 Авг 2017 16:00 #19468

  • fixxxer
  • fixxxer аватар
  • Не в сети
  • Новый участник
  • Сообщений: 11
  • Спасибо получено: 3
  • Репутация: 1
loginkr пишет:

У меня в счетчике каждый раз разные значение попадались(после первого запуска , затем инкримент этого значения) , просто рандом. Решил перестраховаться
Проверяйте значение PWRDWN в начале программы, если не после режима сна запустились - инициализируйте счетчик.

Помнится, Вы еще раньше писали, что прошивается NRF у Вас через раз. На всякий случай - проверьте надежность питания (запись во флэш энергоемкая операция), и всегда проверяйте прошивку после заливки. А то может быть ситуация, когда НЕКОТОРЫЕ 512-байтные страницы прошивки не записались, но ошибок никаких при этом не выдается. Как оно пытается после такого работать - лучше не видеть. :)
Последнее редактирование: 17 Авг 2017 16:01 от fixxxer.
Администратор запретил публиковать записи гостям.

Прошивка NRF24le1 17 Авг 2017 16:04 #19469

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
Код дать не могу - там он генерируется на лету, а вот пример как хранить данные в спящем режиме подскажу:

Объявляем переменную как __xdata __at(0x0100) unsigned int countsleep ;

Следующий адрес прибавляем в зависимости от размера переменной.
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Прошивка NRF24le1 17 Авг 2017 16:04 #19470

  • loginkr
  • loginkr аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Сообщений: 24
  • Спасибо получено: 1
  • Репутация: 0
Эту проблему я решил. В моем экземпляре usbasp бракованый регулятор на 3,3В был.

На счет измерения входного напряжения на nrf. В нем , если не ошибаюсь есть встроенный компаратор или что-то такое, поправьте если не так, и при достижении установленного напряжение включается power save или что-то в этом роде. Так вот нельзя ли это напряжение и передавать, а не измерять его через ацп ?
Администратор запретил публиковать записи гостям.

Прошивка NRF24le1 17 Авг 2017 16:13 #19471

  • fixxxer
  • fixxxer аватар
  • Не в сети
  • Новый участник
  • Сообщений: 11
  • Спасибо получено: 3
  • Репутация: 1
loginkr пишет:
На счет измерения входного напряжения на nrf. В нем , если не ошибаюсь есть встроенный компаратор или что-то такое, поправьте если не так, и при достижении установленного напряжение включается power save или что-то в этом роде. Так вот нельзя ли это напряжение и передавать, а не измерять его через ацп ?
Компаратор есть, только он выдает 1 или 0 в зависимости от того, выше или ниже напряжение установленного предела (их несколько фиксированных). Никакой powersave автоматически не включается, это флаг для программы, что скоро питание все. Если Вам нужно значение напряжения - то компаратор не подойдет. Если достаточно флага хорошо/плохо - самое оно. Использовать примерно так:
void main() {
POFCON|=0xe0;
......
if (POFCON&0x10) powerLow=1; else powerLow=0;
ну или функциями из SDK
pwr_clk_mgmt_pwr_failure_configure(PWR_CLK_MGMT_PWR_FAILURE_CONFIG_OPTION_POF_ENABLE|PWR_CLK_MGMT_PWR_FAILURE_CONFIG_OPTION_POF_THRESHOLD_2_3V);
if (pwr_clk_mgmt_is_vdd_below_bor_threshold()) powerLow=1; else powerLow=0;
Администратор запретил публиковать записи гостям.
Модераторы: FlyRouter
Время создания страницы: 0.127 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.