8fach- Relaiskarte Befehl Get Port Kategorie: Sonstige Hardware (von Jan Martensen - 4.04.2011 19:15) | ||
| ||
Hallo Forum- Nutzer ich betreibe an einem Evaluation- Board mit einem Mega 128 an der 1. seriellen Schnittstelle mehrere 8fach-Relaiskarten Conrad Nr. 19 77 30 und möchte mit CMD 2 (GET PORT) den Schaltzustand aller Relais abfragen, bekomme aber entweder falsche Daten, nicht alle Daten, alte Daten oder keine Daten. Bei der Programmierung in Basic habe ich mich am Demo-Programm orientiert. Folgende Programmteile sind für die Abfrage zuständig: Dim InBuf(4) As Byte Dim OutBuf(4) As Byte Dim S(9) As Byte #define Anz 4 'Anzahl der Relasikarten ... OutBuf(0) = 2 'GET PORT OutBuf(1) = 0 'Broadcast OutBuf(2) = 0 OutBuf(3) = OutBuf(0) Xor OutBuf(1) Xor OutBuf(2) Serial_Write(0,OutBuf(0)) Serial_Write(0,OutBuf(1)) Serial_Write(0,OutBuf(2)) Serial_Write(0,OutBuf(3)) For n=1 To Anz InBuf(0) = Serial_Read(0) InBuf(1) = Serial_Read(0) InBuf(2) = Serial_Read(0) InBuf(3) = Serial_Read(0) S(n) = InBuf(2) Next ... Laut Doku sollten im dritten Byte, also InBuf(2) => S(1) bis S(4) jeweils die Schaltzustände stehen. Lese ich jedoch Speicher-Variablen aus, so stehen dort entweder die Adresse oder der XOR- Wert oder gar nichts. Auch das Lesen eines anderen Bytes der Frames oder das �ndern des Befehls Serial_Read zu Serial_ReadExt bringt nicht das gewünschte Ergebnis. Die serielle Schnittstelle sowie die Relaiskarten sind initiallisiert, alle anderen Befehle der Relasikarte kann ich einwandfrei ausführen. Wo ist mein Gedankenfehler??? Kann mir jemand helfen? Gru�, Jan | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum