STM32 low voltage interrupt

OP #4558754
Lesenswert?

Hallo Zusammen,

ich programmiere gerade einen STM32F030 und möchte wichtige Prozessdaten 
beim unterbrechen der Versorgungsspannung vorher auf ein EEPROM 
speichern.
Da der uC eine Versorgungsspannung von 2.4-3.6V verträgt und ich mal 
irgendwo etwas davon gelesen habe, dass man irgendwo die 
Versorgungsspannung auslesen kann, bzw dafür Interrupts aktivieren kann, 
wollte ich das Anliegen wie folgt lösen.

Positive Flanke Interrupt Vcc < 2,7V = Daten auf EEPROM speichern. (Ggf 
noch mit einer Entprellung versehen)

Nun finde ich jedoch im usermanual nur Register für den Lowpowermode.

Hat jemand von euch schon mal sowas mit einem STM32 realisiert? Oder 
weiß jemand welche Register dafür zu verwenden sind?

Gruß
Gast #4558980
Lesenswert?

Wenn ich mir mal kurz das Datenblatt anschaue, dann fällt mir da das 
"AWD analog watchdog feature" auf. Das könnte man für sowas verwenden.

Der Controller und das EEPROM wird ausreichend über einen C gepuffert um 
noch die Daten ins EEPROM zu schreiben. Ein analog Pin geht vor die 
Pufferung und nutzt das Feature AWD mit den gewünschten Schwellen. 
Sobald der Bereich verlassen wird gibt es einen Interrupt und Du 
schreibst das Zeug weg.

Der Puffer muss halt ausreichend groß sein.
(Firma: www.harerod.de) Persönliche Seite #4559001
Lesenswert?

Uwe B. schrieb:
> Mit dem F030 hast Du Dir ja das kleinste Sparbroetchen ausgesucht. Fast
> alle anderen STM32 haben einen "Programmable voltage detector (PVD)"
> Interrupt, beim F030 ist der weggespart...

Ah, der F7-Rennfahrer. ;)

Der Analog-Watchdog ist vorhanden. Und der F030 ist der Grund, warum ich 
AVR und PIC nur noch unter ganz bestimmten Randbedingungen einsetze.

Beispiel: auf diesem 0,5€-Sparbrötchen (ich liebe den Begriff) 
http://www.harerod.de/applications_ger.html#ASi-Xceiver
werkeln mehrere Timer und DMA-Streams parallel und ersetzen ein ASIC zu 
20% der Materialkosten. :)
(Firma: TU Darmstadt) #4559064
Lesenswert?

Klar, wenn es um Stueckzahlen geht, dann einen uC so klein wie moeglich. 
Und wahrscheinlich kostet es Dich fast die gleiche Zeit, sich in dem PVD 
oder den Analog Watchdog einzuarbeiten. Und damit wirst Du noch auf der 
positive Seite sein, wenn Du analog https://xkcd.com/1205/ 
Entwicklungskosten gegen Bauteilekosten auftraegst.

Aber fuer den Bastler hier kostet ein Nucleo-L476 genausoviel wie ein 
Nucleo-F030.
(Firma: www.harerod.de) Persönliche Seite #4559116
Lesenswert?

XKCD ;)

Ich bin da eher old school:
http://www.ee.ryerson.ca/~elf/hack/realmen.html
"Real Programmers write self-modifying code, especially if it saves them 
20 nanoseconds in the middle of a tight loop."
-> auf den STM32F4/F7 ist das noch etwas härter, da man durch die 
Ausführung im SRAM den ART verliert...


Ich bastele praktisch nicht mehr.
Ich habe, manchmal leider, ein Hobby zum Beruf gemacht.
Und der TO hat von der Wortwahl her auch nicht nach Bastler geklungen.
(Firma: TU Darmstadt) #4559173
Lesenswert?

Marcus H. schrieb:
...
> -> auf den STM32F4/F7 ist das noch etwas härter, da man durch die
> Ausführung im SRAM den ART verliert...
>
Was soll da verloren gehen? ART versucht mit Tricks die Flash Latency 
von x Waitstates auf 0 Waitstates zu reduzieren. Ausfuehrung aus 
CCM/ITCM SRAM hat immer 0 Waitstates, Ausfuehrung aus dem SRAM hat auch 
meistens 0 Waitstates, bi auf den Fall bei gleichzeitigen DMA Zugriff 
auf RAM.
#4559260
Lesenswert?

Uwe B. schrieb:
> Ausfuehrung aus
> CCM/ITCM SRAM hat immer 0 Waitstates, Ausfuehrung aus dem SRAM hat auch
> meistens 0 Waitstates, bi auf den Fall bei gleichzeitigen DMA Zugriff
> auf RAM.

Bei Ausführung aus SRAM (>= 0x20000000) muss der Instruktion Fetcher 
gelegentlich auf Datenzyklen (LDR/STR) warten. Das stört vor allem bei 
32 Bit Instruktionen. Bei CCRAM/FLASH kann er gleichzeitig fetchen da 
dann andere Businterfaces aktiv sind.

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