Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

8fach- Relaiskarte Befehl Get Port Kategorie: Sonstige Hardware (von Jan Martensen - 4.04.2011 19:15)
Ich nutze:
C-Control Pro Mega128
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: