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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.