Digitale PIO Karte ansprechen.

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
tinux
Beiträge: 12
Registriert: 06.12.2006 02:29
Wohnort: Bayern
Kontaktdaten:

Digitale PIO Karte ansprechen.

Beitrag von tinux »

Habe folgendes Problem
Versuche eine Digitale PIO Karte anzusprechen. (μPIO / GPIO18 von ABACOM)
Ich weis überhaupt nicht wie ich das Umsetzen kann.
Wer kann mir weiterhelfen. Ich weis überhaupt nicht was ich ihm senden soll (sieben Datenbytes ?)

Datenprotokoll des Hersteller
Das μPIO / GPIO18 arbeitet als PC-Interface mit 18 digitalen I/O-Kanälen deren Datenrichtung umschaltbar ist (18 GPIO).
Die I/O-Leitungen sind zu drei Ports zusammengefasst (Port B, Port C, Port D). Jeder Port
besitzt sechs I/O-Leitungen:
Die Kommunikation mit dem PC erfolgt per USB. Der USB-Treiber installiert einen virtuellen COM-Port. Der Datenaustausch erfolgt somit wie über eine ‚echte’ RS232-Schnittstelle.
Die Schnittstellenparameter sind: 57600, 8 N, 1
Baud 57600. 8 Datenbits, Keine Parität, 1 Stopbit
Die Kommunikation erfolgt nach dem Frage-Antwort-Prizip (Request/Response). Dabei bestehtein Request immer aus genau sieben Datenbytes. Nachdem Empfang dieser sieben Datenbytes sendet die Firmware 15 Bytes als Antwort an den PC zurück.
Request: 7 Bytes
Byte1: ADC-Referenzumschaltung (0=EXTERN; 1=INTERN VCC; 3=INTERN 1.1V)
Byte2: Richtung Port B
Byte3: Richtung Port C
Byte4: Richtung Port D
Byte5: Daten Port B
Byte6: Daten Port C
Byte7: Daten Port D
Die Bytes 2..4 geben die Datenrichtung an. Ein gesetztes Bit setzt die zugehörige Portleitung auf AUSGANG, ein gelöschtes Bit setzt die Portleitung auf EINGANG.
Die Bytes 5..7 setzen den Ausgangszustand der I/O-Leitungen deren Datenrichtung auf
AUSGANG gesetzt ist. Ein gesetztes Bit schalten den Ausgang HIGH (5V), ein gelöschtes Bit schaltet den Ausgang LOW (0V). Für I/O-Leitungen die nicht als Ausgang sondern als
EINGANG definiert wurden, wird mit den Datenbytes (Byte 5…Byte7) ein interner Pullup-
Widerstand aktiviert . Ein gesetztes Bit aktiviert den Pullup für eine I/O-Leitung. Ein gelöschtes Bit deaktiviert den Pullup für die zugehörige I/O-Leitung.
Die Bits-Nummern der Datenbytes sind den Leitungsnummern der Portleitungen zugeordnet.
Ein gesetztes Bit2 in Byte4 eines Requests setzt also z.B. die Datenrichtung der Portleitung D2 auf Ausgang.
Response: 15 Bytes

Hinweise zur Verwendung des Protokolls
Zum Datenaustausch wird zunächst ein Request-Datenblock (Byte.array) mit einer Länge von
genau sieben Bytes definiert, der mit ALLEN Informationen belegt sein muss, die zum Gerät
geschickt werden sollen. Dann überträgt man diesen Block über die Schnittstelle.
Anschliessend müssen die 15 Antwort-Bytes von der Schnittstelle eingelesen und nach Bedarf
ausgewertet werden. Ein neuer Reqest-Block sollte erst dann ausgegeben werden, wenn alle
15 Bytes als Antwort auf den vorhergehenden Request empfangen wurden.

Code: Alles auswählen

OpenSerialPort(6, "COM6", 57600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)

Dim Byte.s(6)
Byte(0)="000001"
Byte(1)="000001"
Byte(2)="000001"
Byte(3)="000001"
Byte(4)="111111"
Byte(5)="111111"
Byte(6)="111111"

WriteSerialPortData(6, @Byte(), 6)
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Digitale PIO Karte ansprechen.

Beitrag von H.Brill »

Du hast ja auch ein String - Array definiert.
Versuch mal sowas :

Code: Alles auswählen

Dim myarray.b(6)
myarray(0) = %000001
usw.
Manchmal mögen solche externen Karten keine
Strings.
PB 5.60
tinux
Beiträge: 12
Registriert: 06.12.2006 02:29
Wohnort: Bayern
Kontaktdaten:

Re: Digitale PIO Karte ansprechen.

Beitrag von tinux »

Dank @ H.Brill , geht aber leider auch nicht.
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Digitale PIO Karte ansprechen.

Beitrag von H.Brill »

1 Byte hat ja bekanntlich 8 Bit.
Fülle mal das Byte ganz auf :

Code: Alles auswählen

Dim myarray.b(6)
myarray(0) = %00000100
Und mal nach dem Senden ein Delay(50)
reinmachen, da der prozessor ja auch ein paar
Takte braucht.

und daran denken, daß du von rechts zählen
mußt. Im obigen Beispiel ist dann Bit 2 (0-7)
gesetzt.

Wie ich sehe, ist das ganze mit einem AVR
Controller aufgebaut. Müßte mal am Wochenende
mein MyAVR - Board rausholen und mal was probieren.

PS: 49 € ist aber ganz schön teuer für so ein Board
mit USB + TTL Wandler, AVR, und ein paar Kleinigkeiten.
PB 5.60
tinux
Beiträge: 12
Registriert: 06.12.2006 02:29
Wohnort: Bayern
Kontaktdaten:

Re: Digitale PIO Karte ansprechen.

Beitrag von tinux »

Dank @ H.Brill , geht aber leider auch wieder nicht.

währe dir sehr dankbar wenn du mir weiter helfen könntest.
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Re: Digitale PIO Karte ansprechen.

Beitrag von Falko »

Vielleicht braucht der AVR ja auch HEX-Werte.

Code: Alles auswählen

OpenSerialPort(6, "COM6", 57600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)

Dim A_Byte.s(7); Es sind doch sieben Bytes oder?
A_Byte(0)=Hex(%000001)
A_Byte(1)=Hex(%000001)
A_Byte(2)=Hex(%000001)
A_Byte(3)=Hex(%000001)
A_Byte(4)=Hex(%111111)
A_Byte(5)=Hex(%111111)
A_Byte(6)=Hex(%111111)

;Testausgabe in Hex
For i= 0 To 6
  Debug A_Byte(i)
Next

WriteSerialPortData(6, @Byte(), 7)
Leider kann ich das nicht testen, obwohl ich profilab habe, worin diese Hardware
angesteuert werden kann.


Gruß, Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Digitale PIO Karte ansprechen.

Beitrag von H.Brill »

Ist vielleicht ein Quellcode für VB
dabei ? Da könnte man mal schauen.

Oder auch den Code (Bascom, ASM oder C)
für den Atmel. Dann könnte man auch sehen,
was wie dem Atmel übergeben wird.

Ist halt immer ewtas schwierig, wenn man die
Hardware nicht selber hat.
PB 5.60
tinux
Beiträge: 12
Registriert: 06.12.2006 02:29
Wohnort: Bayern
Kontaktdaten:

Re: Digitale PIO Karte ansprechen.

Beitrag von tinux »

Ist leider kein Quellcode dabei.

Gruß tinux
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Re: Digitale PIO Karte ansprechen.

Beitrag von - chris - »

Und wie sieht dein Quellcode aus?

z.B. so:
es müssen sieben Bytes gesendet werden!

Code: Alles auswählen


OpenSerialPort(6, "COM6", 57600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)

Dim Byte.a(6)
Byte(0)=%00000001
Byte(1)=%00000001
Byte(2)=%00000001
Byte(3)=%00000001
Byte(4)=%00111111
Byte(5)=%00111111
Byte(6)=%00111111

WriteSerialPortData(6, @Byte(), 7)

PB v5.72 x86/x64
Windows 10 Pro 64bit
tinux
Beiträge: 12
Registriert: 06.12.2006 02:29
Wohnort: Bayern
Kontaktdaten:

Re: Digitale PIO Karte ansprechen.

Beitrag von tinux »

Danke, geht auch nicht.

was ich mich frage, ist ob die 7 Bytes überhaupt so angenommen.

Code: Alles auswählen

OpenSerialPort(6, "COM6", 57600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)

Dim Byte.b(6)
Byte(0)=%00000001
Byte(1)=%00111111
Byte(2)=%00111111
Byte(3)=%00111111
Byte(4)=%00111111
Byte(5)=%00111111
Byte(6)=%00111111

;WriteSerialPortData(6, @Byte(), 7)

For i=0 To 6
  Debug @Byte(i)
Next
Gruß, tinux
Antworten