Programmdateien: comir_tmr.c , comir_tmr.h , test_comir_tmr.c
Der Treiber nutzt Timer 1 und stellt dem Anwenderprogramm folgene Funktionen bereit: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.
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