Fehlerbehandlung in C (PI5): Unterschied zwischen den Versionen

Aus C und Assembler mit Raspberry
Die Seite wurde neu angelegt: „Da wir bisher keine Möglichkeit haben, Informationen bewusst an uns zu senden, nutzen wir nun die LED, um festzustellen, wenn etwas schiefgeht. Dazu erstellen wir eine Funktion, die über die LED einen Fehlercode anzeigen kann. Wir erweitern dazu unseren "led.c" Code mit dieser Funktion: <syntaxhighlight lang="C"> void LED_Error(u32 errorcode) { while (TRUE) { for (u32 z = 0; z < errorcode; z++) { LED_on(); // LED…“
 
KKeine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Da wir bisher keine Möglichkeit haben, Informationen bewusst an uns zu senden, nutzen wir nun die LED, um festzustellen, wenn etwas schiefgeht. Dazu erstellen wir eine Funktion, die über die LED einen Fehlercode anzeigen kann.
Da wir bisher keine Möglichkeit haben, uns gezielt Informationen anzuzeigen, nutzen wir die LED, um zu erkennen, wenn ein Fehler auftritt. Dazu erstellen wir eine Funktion, die mithilfe der LED einen Fehlercode anzeigt.


Wir erweitern dazu unseren "led.c" Code mit dieser Funktion:
Wir erweitern dafür unseren „led.c“-Code um folgende Funktion:
<syntaxhighlight lang="C">
<syntaxhighlight lang="C">
void LED_Error(u32 errorcode)  
void LED_Error(u32 errorcode)  
Zeile 10: Zeile 10:
         {
         {
             LED_on(); // LED einschalten
             LED_on(); // LED einschalten
             wait(0x100000); // Warten
             wait(0x100000); // Kurze Wartezeit
             LED_off(); // LED ausschalten
             LED_off(); // LED ausschalten
             wait(0x100000); // Warten
             wait(0x100000); // Kurze Wartezeit
         }
         }
         wait(0x100000); // Zusätzliche Wartezeit, um den Fehlercode erkennbar zu machen
         wait(0x100000); // Zusätzliche Wartezeit, um den Fehlercode erkennbar zu machen
Zeile 18: Zeile 18:
}
}
</syntaxhighlight>
</syntaxhighlight>
Diese Funktion lässt die LED entsprechend des übergebenen Fehlercodes aufleuchten. Der Fehlercode gibt an, wie oft die LED aufleuchtet, bevor eine kurze Pause erfolgt.


Um nun diese Funktion zu testen, ändern wir unseren "main.c" Code:
Um die Funktion zu testen, passen wir unseren "main.c"-Code wie folgt an:
<syntaxhighlight lang="C">
<syntaxhighlight lang="C">
//
//
Zeile 30: Zeile 31:
int main (void)
int main (void)
{
{
   LED_off();
   LED_off();     // LED zunächst ausschalten
   LED_Error(2);
   LED_Error(2); // Fehlercode 2 testen
}
}
</syntaxhighlight>
</syntaxhighlight>
Zunächst schalten wir die LED aus. Mit "LED_Error(2)" testen wir die neue Funktion. Der Fehlercode #2 wird nun zweimal kurz hintereinander die LED aufleuchten lassen, eine kurze Pause machen und das Ganze wird wiederholt.
Zunächst schalten wir die LED aus. Dann testen wir die neue Funktion mit "LED_Error(2)". Dadurch wird die LED zweimal kurz hintereinander aufleuchten, eine kurze Pause machen und diesen Vorgang wiederholen.


Solange wir keine andere Möglichkeit haben, einen Fehler zu sehen, werden wir diese Funktion verwenden.
Bis wir eine bessere Möglichkeit haben, Fehler anzuzeigen, werden wir diese Funktion verwenden.

Version vom 13. August 2024, 12:42 Uhr

Da wir bisher keine Möglichkeit haben, uns gezielt Informationen anzuzeigen, nutzen wir die LED, um zu erkennen, wenn ein Fehler auftritt. Dazu erstellen wir eine Funktion, die mithilfe der LED einen Fehlercode anzeigt.

Wir erweitern dafür unseren „led.c“-Code um folgende Funktion:

void LED_Error(u32 errorcode) 
{
    while (TRUE) 
    {
        for (u32 z = 0; z < errorcode; z++) 
        {
            LED_on(); // LED einschalten
            wait(0x100000); // Kurze Wartezeit
            LED_off(); // LED ausschalten
            wait(0x100000); // Kurze Wartezeit
        }
        wait(0x100000); // Zusätzliche Wartezeit, um den Fehlercode erkennbar zu machen
    }
}

Diese Funktion lässt die LED entsprechend des übergebenen Fehlercodes aufleuchten. Der Fehlercode gibt an, wie oft die LED aufleuchtet, bevor eine kurze Pause erfolgt.

Um die Funktion zu testen, passen wir unseren "main.c"-Code wie folgt an:

//
// kernel.c
//

#include "led.h"
#include "time.h"

int main (void)
{
   LED_off();     // LED zunächst ausschalten
   LED_Error(2);  // Fehlercode 2 testen
}

Zunächst schalten wir die LED aus. Dann testen wir die neue Funktion mit "LED_Error(2)". Dadurch wird die LED zweimal kurz hintereinander aufleuchten, eine kurze Pause machen und diesen Vorgang wiederholen.

Bis wir eine bessere Möglichkeit haben, Fehler anzuzeigen, werden wir diese Funktion verwenden.