Forum: Mikrocontroller und Digitale Elektronik STM32 PVD Interrupt wird nicht ausgelöst


von rgb (Gast)


Lesenswert?

Hallo zusammen,

ich verzweifle gerade am PVD (Programmable Voltage Detector) eines 
STM32H7, den ich benutzen möchte vor einer Stromunterbrechung ein paar 
Bytes an Daten in den Flash zu schreiben. Zum Test wollte ich mich 
darauf beschränken einfach einen Pin auf High zu ziehen und mir mit 
einem Oszilloskop anzuschauen, wie lange der uC etwa nach der 
Abschaltung noch läuft. Die Zeitspanne, in der die Spannung von 2.85 V 
auf 1.62 V fällt liegt etwa bei 10 ms.

Konfiguriert ist alles mit CubeMX, was zu folgendem Code führt:
1
  /* Peripheral interrupt init */
2
  /* PVD_AVD_IRQn interrupt configuration */
3
  HAL_NVIC_SetPriority(PVD_AVD_IRQn, 0, 0);
4
  HAL_NVIC_EnableIRQ(PVD_AVD_IRQn);
5
6
  /** PVD Configuration 
7
  */
8
  sConfigPVD.PVDLevel = PWR_PVDLEVEL_7;
9
  sConfigPVD.Mode = PWR_PVD_MODE_IT_RISING;
10
  HAL_PWR_ConfigPVD(&sConfigPVD);
11
  /** Enable the PVD Output 
12
  */
13
  HAL_PWR_EnablePVD(); // PVDE bit setzen

Das funktioniert so weit, dass wenn ich einen Software-Trigger per 
EXTI->SWIER1 gebe, der Interrupt ausgelöst, und der Pin auf High gezogen 
wird. Seitens EXTI und NVIC scheint für mich also alles zu passen. Das 
PVDE-bit in PWR_CR1 ist gesetzt, das habe ich auch geprüft, also sollte 
der PVD aktiv sein.

Hat jemand eine Idee, wo der Fehler liegen könnte?

von Jim M. (turboj)


Lesenswert?

rgb schrieb:
> Zum Test wollte ich mich
> darauf beschränken einfach einen Pin auf High zu ziehen und mir mit
> einem Oszilloskop anzuschauen, wie lange der uC etwa nach der
> Abschaltung noch läuft.

Hat den Schönheitsfehler das der Stromverbrauch moderner µC um mehrere 
Größenordnungen schwanken kann wenn man deren Stromspar Fähigkeiten 
einsetzt.

"Alle Peripherials eingeschaltet" zieht heutzutage mehr Strom als der 
CPU Kern selbst, sogar wenn der sowas wie CoreMark berechnen muss.



Wieso eigentlich "Rising" Edge und nicht "falling" Edge?
Ist das nicht der flasche Übergang? Ich hätte - ohne das Manual gelesen 
zu haben - jetzt spontan eher PWR_PVD_MODE_IT_FALLING versucht.

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
Noch kein Account? Hier anmelden.