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();} }
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; Zum Speichern im Flash ist es da aber in der Regel bereits zu spät...
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
mehmet karakaya schrieb: > die bypass kapazitoren haben genug energie um die uC beim > speichervorgang mit strom zu versorgen Hast Du das mal nachgemesen?
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.
Das EXTI-Signal wird bei unterschreiten der Spannung hochgezogen und damit der Interrupt ausgelöst, deshalb die steigende Flanke. Wenn Du es besser weißt ... bitte :)
Michael K. schrieb: > Das EXTI-Signal wird bei unterschreiten der Spannung hochgezogen > und > damit der Interrupt ausgelöst, deshalb die steigende Flanke. Wenn Du es > besser weißt ... bitte :) du hast recht mit "Rising" hat es funtioniert danke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.