Lösung zur "Timer-Steuerung"  
     
 
Für die Mikrocontroller-Steuerung eines Motors ist eine Spannungsüberwachung zu programmieren:
  • Bei Unterschreiten einer bestimmten Untergrenze der Versorgungsspannung des
    Mikrocontrollers, hier durch ein anhaltendes LOW-Signal an einem Port ihrer Wahl,
    sollen alle Prozesse abgebrochen werden und eine Fehlermeldung ausgegeben werden.
  • Die Fehlerroutine dauert 3 s an und wird durch eine blinkende LED signalisiert.
  • Nach Ablauf der 3 s wird geprüft, ob sich die Versorgungsspannung wieder oberhalb
    der bestimmten Untergrenze befindet. In diesem Fall wird das Fehlersignal abgeschaltet
    und die Steuerungsprozesse des Mikrocontrollers neu gestartet.

    Bonus: Wäre der
    Philips P89LPC93X hierzu in der Lage?

Hinweis: Erst nach dem Entwurf (PAP) wird ein Quellcode erstellt.

 

 
 

 

Lösung:
 

Hauptprogramm

Zuerst werden, wie gewöhnlich, die Ports initialisiert. Auch an den Interrupt muss man denken. Zusätzlich kommt hier noch die Initialisierung des Timers dazu. Danach folgt die Endlosschleife, die das eigentliche Programm simuliert. Hier wird die LED ausgeschaltet, um sicherzustellen, dass sie nicht noch von vorher an ist.

Interrupt

Hier wir zuerst der Zähler2 resettet. Danach beginnt eine WHILE-Schleife, die für das Zählen der drei Sekunden zuständig ist. Nun wird der Timer gestartet. Wenn der Timer sein Überlauf-Flag gesetzt hat, wird ein Zähler um 1 erhöht und das Überlauf-Flag wieder zurückgesetzt. Wenn der Zähler 57 erreicht hat, ist eine Sekunde vorbei. Dann wird die LED umgeschaltet, der Zähler resettet und der Zähler2, der die Sekunden zählt, um eins erhöht. Wenn nun der Zähler2 bis drei gelaufen ist, sind demnach drei Sekunden um. Dann wird der Timer gestoppt. Anschließend wird geprüft ob der Fehler noch vorliegt. Wenn ja, wird der Controller resettet. Wenn nicht, wird der Interrupt beendet und das Hauptprogramm läuft weiter. Demnach bleibt die LED dann aus.

Lösungen zum Download