Forum: Mikrocontroller und Digitale Elektronik STM32 RTC interrupt für sekunden task verwenden


von groma (Gast)


Lesenswert?

Hallo Leute,

Prozessor: STM32F105RC

Folgendes Problem:
Ich benötige in meinem Programm einen sekunden Task (verwende kein OS).
Da ich die RTC bereits verwende habe ich mir gedacht, dass ich den 
Interrupt
des RTC verwenden kann und rufe hier meinen Sekunden Task auf.
Funktioniert eigentlich ganz gut.

NUR hängt sich meine Steuerung auf und zwar nach ca. 12 - 48h.

Meine Frage ist es möglich, dass man im RTC interrupt keine funktionen 
aufrufen darf die mit der RTC nichts zu tun hat. Mittlerweile rufe ich 
diese funktion über den Systick timer auf und mache ich einen 
langzeittest der vielversprechend aussieht.

Worum geht es mir.
Die Steuerung soll zuverlässig über Monate laufen, und daher wollte ich 
fragen ob man zumindest sagen kann, dass das ein Fehler war, oder ob 
dass jetzt nur Zufall ist, dass die Steuerung bereits länger (24h) ohne 
Probleme läuft.

Vielen Dank im Voraus!!

von Klaus (Gast)


Lesenswert?

Suche mal hier im Forum nach solcherart Fehlern.

Es sind eine ganze Reihe von Ursachen möglich, die von Designfehlern in 
der Elektronik bis zu solchen in der Software reichen. Die beiden 
häufigsten sind Probleme mit der Stromversorgung, insbesondere falls 
Lasten mit hohen Strömen bzw. starken Stromänderungen beteiligt sind, 
sowie Designfehler in der Software z.B. Stack- oder Pufferüberläufe oder 
Übersehen von Seiteneffekten.

Mehr lässt sich auf diesem allgemeinen Level beim besten Willen nicht 
sagen.

Die einzige wirklich professionelle Herangehensweise ist eine Analyse 
und Diagnose des Problems. Workarounds wie Du sie verwendest, gehen i.A. 
allenfalls zufällig.
Es wäre extrem ungewöhnlich wenn man bzgl. der Funktionen in Interrupts 
auf solche eingeschränkt wäre, die direkt mit der Hardware-Einheit zu 
tun haben, die den Interrupt ausgelöst haben.
Anfänger machen allerdings oft den Fehler recht lange Funktionen in 
Interrupts aufzurufen und ein eigentlich notwendiges 
ereignisorientiertes Design zu vernachlässigen. Das z.B. wäre einer der 
Designfehler.

Du hast also zwei Möglichkeiten: Genau zu diagnostizieren, in welcher 
Weise im Detail, das System sich "aufhängt". Als z.B. Debug-Ausgaben. 
Und uns hier so viele Informationen über Dich selbst, das Design und die 
Hardware und Software zu geben, wie möglich, in der Hoffnung das hier 
jemanden etwas auffällt.

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.