Wie mache ich PVD ( programmable voltage detector ) interrupt funktioniert ?

Gast #4750104
Lesenswert?

hallo forum,

Ich will bei stromabschaltung eine Datei zum flash von STM32F103 
speichern

dafür richte ich PVD ( programmable voltage detector ) interrupt 
folgende Weise ein.

aber ich kann PVD interrupt nicht feuern

Ich schalte eine LED durch ein Portpin ein im PVD interrupt, aber die 
LED leuchtet nicht auch für kurze zeit - bis die kapazitoren leeren

die flash speicher routinen habe ich im anderen Program getestet kein 
problem

wer kann weiter helfen ? danke im voraus

hier sind die Kodierung
==========================0============================
main(){
---------------------------------
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
-------------------------------------------------------------
  NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 6;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);}
-------------------------------------
EXTI16init();
-------------------------------------
  FLASH_Unlock();
  EE_Init();
    EEread_params();
----------------------------------
/* Configure the PVD Level to 2.9V */
        PWR_PVDLevelConfig(PWR_PVDLevel_2V9);
  /* Enable the PVD Output */
        PWR_PVDCmd(ENABLE);
---------------------------------------------
}
---------------------------------------------
void EXTI16init(void)
{
  EXTI_InitTypeDef EXTI_InitStructure;

  /* Configure EXTI Line16(PVD Output) to generate an interrupt on 
rising and
     falling edges */
  EXTI_ClearITPendingBit(EXTI_Line16);
  EXTI_InitStructure.EXTI_Line = EXTI_Line16;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
}
----------------------------------
void PVD_IRQHandler(void)
{
    EXTI_ClearITPendingBit(EXTI_Line16);
    EXTI_ClearFlag(EXTI_Line16);

    EEsave_param();

    while (1){Delay(100);IWDG_ReloadCounter();}

}
Gast #4751961
Lesenswert?

nein nicht "EXTI trigger rising" sondern "falling"

ich will bei strom"ab"schaltung speichern

die bypass kapazitoren haben genug energie um die uC beim 
speichervorgang mit strom zu versorgen

flash speichern dauert nur 10 - 20 mikrosekunden

mein problem ist dass die interrupt nicht feuert

speichern ist nicht die wichtigste problem
Gast #4751964
Lesenswert?

Moin,

welchen Wert hat NVIC_SetPriorityGrouping?
Ich frage weil vielleicht dadurch das 
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 6;
Probleme machen könnte.

Kannst NVIC_IRQChannelSubPriority zur Probe ja mal auf 0 setzen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren