Вот такая "метаморфоза" имеет место:
Задействую детектор напряжения питания (PVD) чтобы была индикация разряда LI-Ion батареи. Вообще-то уже работает..
1. Нужно установить порог срабатывания PVD на 2,9v
1.1 Объявляю макрос : #define PVDT2V9 PWR->CR|=PWR_CR_PLS_2V9
1.2 В "main" выполняю его: PVDT2V9;
п. 1 выполняется и корректно работает.
**
2. Нужно разрешить работу PVD.
2.1 Объявляю макрос : #define PVDEN PWR->CR|=PWR_CR_PVDE
2.2 В "main" выполняю его: PVDEN;
п. 2 выполняется и корректно работает.
**
Теперь по состоянию флага PVDO в регистре PWR_CSR нужно выводить "N" (батарея в норме) или "D" (батарея разряжена)
Вот тут начинаются "чудеса"..
3. Объявляю макрос : #define PVDLVL PWR->CSR & PWR_CSR_PVDO
3.1 И вот так проверяя состояние флага (через макрос) должен вывести "N" или "D"
if (PVDLVL) // Проверка состояния "Hi" PVDO.
{PrintRow(R4,14,"D");} // PVD=1. Вывод знака разрядки батареи.
else // PVD=0. Вывод знака нормального заряда батареи.
{PrintRow(R4,14,"N");}
Через макрос PVDLVL
условие не выполняется!! хоть тресни;(;(;(
А вот если строку условия написать так:
if (PWR->CSR & PWR_CSR_PVDO) // Проверка состояния "Hi" PVDO.
то есть "в лоб", не через макрос..
и далее так же как выше, то всё начинает работать как положено!
То есть налицо "непонимание" состояния флага если оно отслеживается через макрос;(;(
Есть какие-либо соображения?? (на всякий случай среда - Keil 5.20, "косяков" такого типа пока не наблюдалось)
Какая-то фигня получается. Конечно применение макроса непринципиально, но для "общего развития" неплохо было бы обсудить.
;)
А по поводу "борьбы" с этим датчиком, так он уже давно "взнуздан" и объезжен. Крутейший сабж!! Сейчас работают два датчика, улица и помещение. Выводятся все метеоданные, разностная температура, разностная влажность, вводится и сохраняется высота измерения давления, отображается давление, приведённое к уровню моря в точке измерения и значение барической ступени на установленной высоте. А сейчас это безумное устройство "обкатывается" под батарейное питание и вот такой вопрос попутно возник;);)
Фуфф!
ВотЪ!