Lehre.IW_P10 (Struktur)


Informatikwerkstatt - Gruppe MR, Interaktive Übungen zu Foliensatz 10

Der Treiber comir_tmr mit Testprogramm (P10\F10-test_comir_tmr\test_comir_tmr)

Programmdateien: comir_tmr.c , comir_tmr.h , test_comir_tmr.c

Der Treiber nutzt Timer 1 und stellt dem Anwenderprogramm folgene Funktionen bereit:
  • Starten eines der 4 Timerkanäle mit einer Wartezeit in 100ms-Schritten
  • Rückgabe der Restzeit in 100ms-Schritten
  • Lesen der Programmlaufzeit seit dem letzten Neustart in 100ms-Schritten
Das Testprogamm invertiert den Ausgabewert an LD7 alle 1,2 s, den Ausgabewert an LD8 alle 0,7 s und gibt auf LD4..LD0 die nierwertigsten 5 Bits der Programmlaufzeit in Sekunden aus.

Der Treiber comir_lcd mit Testprogramm (P10\F10-test_comir_lcd\test_comir_lcd)

Hardware-Konfiguration:
  • LC-Display Stecker J2 über Kabel mit dem Stecker JD oben verbinden.
  • LC-Display JP2 Jumper MD0 und MD2 stecken (Übertragungsprotokolls 8N1, 9600 Baud).

Programmdateien: comir_lcd.c , comir_lcd.h , test_comir_lcd.c + Treiberdateien comir_tmr.h/c

Der Treiber comir_lcd stellt dem Anwenderprogramm dieselben Funktionen bereit wie der Treiber comsf_lcd, nur das die periodisch aufzurufende Schrittfunktion durch eine ISR ersetzt ist. Zusätzlich enthält er eine ISR für versehentlich aktivierte Interrupts, die nicht behandelt werden. Die zählt bei jedem "schlechten" Interrupt das letzte Byte auf der unteren LCD-Zeile in der Fehlerzählerreihenfolge ". 1 2 ... 9 a b ... z" hoch. Bei zu vielen "schlechten Interrupts wird im letzten Byte "z" angezeigt.

Das Testprogramm nutzt zusätzlich der Treiber comir_tmr und zeigt auf dem LC-Display hinter "W0:" die Restzeit und den Zustand von Timer-Kanal 0, hinter "W1:" die Restzeit und den Zustand von Timer-Kanal 1 und hinter "Zeit:" die Programmlaufzeit in Sekunden an.

Die Treiber comir_pc und comir_sonar mit Testprogramm für alle Treiber (P10\F10-comir\comir)

Hardware-Konfiguration:
  • LC-Display Stecker J2 über Y-Kabel mit dem Stecker JD oben.
  • LC-Display JP2 Jumper MD0 und MD2 stecken (Übertragungsprotokolls 8N1, 9600 Baud).
  • Ultraschallsensormodul über dasselbe Y-Kabel mit dem Stecker JD unten verbinden.
  • Jumper JDX gekreuzt.
  • PModUSBUSART an JH stecken und über USB mit dem PC verbinden.
  • JHX gekreuzt.

Programmdateien: comir_pc.c , comir_pc.h , comir_sonar.c , comir_sonar.h , test_comir.c + Treiberdateien comir_tmr.h/c und comir_lcd.h/c

Der Treiber comir_pc und comir_sonar stellen dem Anwenderprogramm dieselben Funktionen bereit wie der Treiber comsf_pc und comsf_sonar, nur das die periodisch aufzurufenden Schrittfunktionen durch je eine ISR ersetzt sind. Die Get- und Send-Funktionen sind so umgeschrieben, dass während der Zugriffe auf private Daten des Treibers die Interrupts, die dieselben Daten bearbeiten, gesperrt sind. Zusätzlich ist für den Treiber comir_pc unter Nutzung von Timer 3 ein Empfangs-Timeout implementiert, der unvollständige Nachrichten nach einer gewissen Zeit löscht. Denn wenn die empfangene Byteanzahl kein Vielfaches der Nachrichtengröße ist, liegt meist ein Übertragungsfehler oder ein Fehler im PC-Programm vor, nach dem anderenfalls das Mikrorechnerprogramm neu initialisiert werden muss. Weiterhin ist eine Funktion zur Abfrage, ob im Treiber Fehlfunktionen aufgetreten sind, ergänzt.

Das Testprogramm test_comir.c stellt auf dem LC-Display hinter "S:" den aktuellen Abstandswert in Zoll, hinter "I:" die zuletzt empfangene 4-Byte-Nachricht als Zeichenkette, hinter "L:" das zuletzt empfangene Byte, hinter "T:" die Programmlaufzeit in Sekunden, hinter "W:" die verbleibende Wartezeit nach einem Nachrichtenempfang, bis die Antwortnachricht gesendet wird und hinter "E:" die Werte der Fehlerzähler dar. Der erste Fehlerzähler zählt Sendeversagen, die jedoch nie auftreten sollten, der zweite Empfangs-Timeouts, die entstehen, wenn vom PC mehr oder weniger als 4 Bytes im Block gesendet werden, der dritte zählt Nachrichten und der letzte "unerwünschte Interrupts". Die Antwortnachricht umfasst den 2-Byte-Sonarwert, den 1-Byte-Sonarzählerwert und den 1-Byte-Nachrichtenzählerwert. Für das PC-seitige Versenden und den Empfangen der Nachrichten genügt HTerm.


Autor: gkemnitz, Letzte Änderung: 06.11.2024 20:33:29


 TU Clausthal 2020  Impressum