Forum: Mikrocontroller und Digitale Elektronik Endlosschleife in RTC Beispiel


von FoxyFox (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich arbeite mich gerade ein wenig in die stm32 Programmierung anhand der 
gegebenen Beispiele ein. Klappt bisher ganz gut nur habe ich jetzt mal 
eine Frag zur RTC und finde einfach keine Antwort. Den Code aus der Lib. 
habe ich mal angehängt.
Es geht um die zwei Schleifen bei 113 und 214. Welchen Zweck erfüllen 
sie genau?
Bin was programmeiren angeht noch ziemlicher Anfänger also wenn möglich 
"einfach" erklären ;)
LG
Foxy

von Michael_SS (Gast)


Lesenswert?

Hallo.

Bei den beiden Schleifen

While(1)
{
}

handelt es sich um Endlosschleifen. Dort passiert nichts mehr.
Du hast zwei Möglichkeiten auf einer Endlosschleife heraus zu kommen:
1. Du aktivierst den Watch Dog, der dann nach Ablauf der Zeit einen 
Reset durchführt.

2. Du hast eine Interrupt Service Routine geschrieben und die globale 
Interruptfreigabe ist gesetzt. Dann wird im Falle eines Interrupts die 
Endlosschleife verlassen und die ISR ausgeführt. Allerdings springt das 
Programm nach der Beendigung wieder zurück in deine Endlosschleife. Also 
hast du diese nicht wirklich verlassen.

Ansonsten benutzt man diese Schleife z.B. in der Main, um das 
Programmierte immer wieder ablaufen zu lassen:


void main()
{
  ..
  ..
  while(1)
    {
      // Dein Code
    }
}

von Kein Name (Gast)


Lesenswert?

In diesem Fall wollte der Programmierer die Demo beenden. Nur - was soll 
passieren, wenn ein Mikrocontoller Programm zu ende ist? Da hat der 
Hersteller einfach gesagt: ein MC Programm darf sich nicht beenden. Es 
muss immer weiter laufen. Weil nach der Demo nichts mehr zu tun ist, 
setzte der Programmierer einfach eine Endlosschleife hinter sein 
Programm.

von FoxyFox (Gast)


Lesenswert?

Hallo,

danke euch zweien jetzt habe ich es kapiert :)

LG
Foxy

von Mikel M. (mikelm)


Lesenswert?

Es könnte z.b. sinnvoll sein ihn hier immer wieder schlafen zu legen, 
dabei reduziert sich der Stromverbrauch. Man muß dabei aber aufpassen 
das  man nicht Teile die für die Ausführung noch wichtig sind dabei 
deaktiviert. z.b. nen Timer der aber den nächsten Interrupt aktivieren 
soll.

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.