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

Для самодельных радиолюбительских устройств это также актуально. К счастью некоторые микроконтроллеры имеют встроенный индикатор уровня напряжения, и радиомодуль NRF24LE1 со встроенным контроллером не исключение.
Этот радиомодуль содержит встроенный компаратор, носящий название Power-Failure (POF) Comparator. Этот компаратор предупреждает контроллер о скором исчезновении напряжения. Он сравнивает напряжение питания Vdd с пороговым напряжением. Когда напряжение питания становится меньше порогового напряжения, компаратор срабатывает. Пороговое напряжение может устанавливать программист в зависимости от требований текущего приложения. Существуют следующие возможные уровни порогового напряжения: 2.1, 2.3, 2.5 и 2.7 В.
Для работы с индикатором напряжения в NRF24LE1 служит 8-разрядный регистр POFCON. Его биты имеют следующую функциональность: биты 0-3 не используются, бит 4 устанавливается в 0 при Vdd выше порогового значения и в 1 при Vdd ниже порогового значения, биты 5-6 позволяют настроить уровень порогового напряжения, бит 7 включает (запись 1) и выключает (запись 0) компаратор POF.
Также для работы с индикатором напряжения можно использовать специальные функции. Функция hal_pof_enable() активирует компаратор POF, если в качестве аргумента будет записана 1. Функция hal_pof_set_threshold() позволяет установить значение порогового напряжения. В качестве ее аргумента могут быть следующие значения: HAL_POF_THRESHOLD_2_1V, HAL_POF_THRESHOLD_2_3V, HAL_POF_THRESHOLD_2_5V и HAL_POF_THRESHOLD_2_7V. А с помощью функции hal_pof_warning() можно узнать, сработал ли компаратор. Если да, то функция вернет 1.
Ниже приведен код работы с индикатором напряжения в NRF24LE1 с использованием битов, а также схема подключения данного примера.

#include"reg24le1.h"
void main()
{
POFCON |= 0xe0; // Включаем компаратор POF с пороговым значением 2.7 В
P0DIR = 0; // Настраиваем порт 0 на выход
P0 = 1; // Порт 0 в верхний логический уровень
// бесконечный цикл
while(1)
{
if(POFCON & 0x10) // Проверяем срабатывание компаратора POF
P00 = 0; // Линия 0 порта 0 в низкий логический уровень
}
}
© digitrode.ru