Hallo Forum :)
wieder mal ein RTC-Problem ... mühsam nährt sich das Eichhörnchen ...
Aber langsam krieg ich das Ding in den Griff ... Einzig eine Kleinigkeit
irritiert mich noch sehr.
Ich verwende die STM32F103-interne RTC mit programmiertem Alarm.
Tritt der RTC-Alarm auf, wird an PC13 ein Impulse rausgegeben, der dann
den Hauptspannungswandler und damit die Haupt-Stromversorgung für den
STM32 aktiviert.
Ich hab verschiedene Möglichkeiten, wie der STM32 zum Leben erwachen
kann ...
- USB-Power
- Druck auf einen Taster
- RTC-Alarm
(- Selbsthaltung)
Soweit geht das gut ...
Ich würde nun gerne feststellen, ob der RTC-Alarm zugeschlagen hat.
Hierzu hätte ich folgendes versucht:
1 | if (RTC_GetFlagStatus(RTC_FLAG_ALR) == SET)
|
2 | {
|
3 | RTC_ClearFlag(RTC_FLAG_ALR);
|
4 | while (RTC_GetFlagStatus(RTC_FLAG_ALR) == SET)
|
5 | ;
|
6 | // per RTC-Alarm aufgeweckt
|
7 | }
|
Das Flag wird scheinbar nur gesetzt, wenn der µC nicht im Power-Down
war.
Im Manual heißt es - winzig mit ein paar Wörtern, wie alle wichtigen
Dinge, die uns das Datenblatt vorenthalten will - "ALRF not powered in
Standby". (siehe Bild im Anhang)
Also das Flag kann man dann wohl nicht verwenden ...
Eine andere Idee wäre gewesen, die Alarm-Register von der RTC
zurückzulesen ... Die sind aber nur write-only.
Muss ich wirklich wertvolle Backup-Domain-Register opfern, um den
RTC-Alarm-Wert über den Standby hinweg zu sichern?
Oder hab ich irgendwas übersehen und es ist eigentlich ganz einfach?
Viele Grüße,
Mampf