Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: stm32f407 PVD
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
SasaVitebsk
У меня стоит задача обнаружить свал питания. Первоначально задача выполнялась на внутреннем АЦП. Но подавал я туда не питание процессора, а питание до стабилизатора.
Всё прекрасно работало.
Хочу слегка упростить. Конечно можно опять же воспользоваться АЦП, только анализировать VDD, но я решил воспользоваться PVD из PWR регистра.
И что-то не работает. Вроде бы как всё правильно инициализирую.
Сначала включаю PWR
Код
  // Enable Power Control clock
  __PWR_CLK_ENABLE();
  /* The voltage scaling allows optimizing the power consumption when the device is
     clocked below the maximum system frequency, to update the voltage scaling value
     regarding system frequency refer to product datasheet.  */
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
  __enable_interrupt();
  // Разрешить питание RTC и BackUp
  PWR->CR |= PWR_CR_DBP;

устанавливаю уровень и запускаю PVD:
Код
  // Работа со свалом питания
  PWR->CR |= PWR_CR_PLS_LEV7;
  PWR->CR |= PWR_CR_PVDE;

Потом разрешаю прерывания
Код
  EXTI->FTSR |= EXTI_FTSR_TR16;
  EXTI->IMR |= EXTI_IMR_MR16;
  EXTI->PR = EXTI_IMR_MR16;
  // Прерывание по свалу питания
  HAL_NVIC_SetPriority(PVD_IRQn, 0x6, 0);
  HAL_NVIC_EnableIRQ(PVD_IRQn);


Но что-то прерываний не вижу, при выключении питания.
Кто-нибудь может прокомментировать?
SasaVitebsk
Отвечаю сам. Разобрался. ))
Короче PVD работает не совсем как ожидаешь интуитивно... )) Это конечно описано...
Сначала питание попадает на PVD. По результату обработки формируется цифровой выходной сигнал. Он инверсный.
Вот этот инверсный сигнал попадает на EXTI.
Таким образом чтобы детектировать спадающий фронт питания, надо обрабатывать нарастающий фронт EXTI. ))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.