Forum: Mikrocontroller und Digitale Elektronik Unterprogramme und der Weg zurück


von Agst (Gast)


Lesenswert?

Ich habe gerade eine Gedankenblockade. folgendes (gekürztes) Programm
1
main()
2
{
3
  aus EEPROM Fehlerbit lesen //(ist 1, kurz zuvor gesetzt)
4
  if (Fehlerbit == 1)
5
    Fehlerroutine()
6
  weiter mit Programm
7
}
8
9
10
Unterprogramm Fehlerroutine:
11
Fehlerroutine()
12
{
13
  Wert messen
14
  if (Wert >= 5)
15
  {
16
    Fehlerbit in EEPROM zurück auf 0 setzen
17
    break();
18
  }
19
  alles ausschalten;
20
  Sleep mode();
21
}

Falls das Fehlerbit gesetzt wird/ist, dann soll der Controller in den 
Sleep mode fallen.

Wenn eine Bedingung erfüllt (Wert>=5) ist, soll das Fehlerbit 
zurückgesetzt werden und mit dem Programm weiter fortgefahren werden.

Geht das in dem oben geschilderten Fall so oder geht der Controller 
trotzdem noch in den sleep mode?

ich möchte natürlich, das das Programm sofort nach erreichen der 
Bedingung wieder fortgesetzt wird.

Anmerkung:
Der Sleep mode bleibt solange, bis die die Stromzufuhr unterbrochen 
wird. Erst bei erneutem Einschalten wird die Bedingung geprüft und das 
Fehlerbit evtl. zurückgesetzt. Soll heißen, das nach zurücksetzen des 
Fehlerbits, der Sleepmode nicht in Gang gesetzt werden soll.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Fehlerroutine()
{
  Wert messen
  if (Wert >= 5)
  {
    Fehlerbit in EEPROM zurück auf 0 setzen
  }
  else
  {
    alles ausschalten;
    Sleep mode();
    /* Forever bis Power-OFF / Power-ON */
  }
}

von Agst (Gast)


Lesenswert?

Ups - jaja die Gedankenblockade!

Ein einfaches Else - wer hätte das gedacht.

Vielen Dank!

>/* Forever bis Power-OFF / Power-ON */

 Richtig - forever bis Power off
 Nach Power On Bedingung prüfen

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.