Ansteuerung eines externen Bausteins mit Datenbus

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
berndl666
Posts: 1
Joined: Tue Mar 30, 2010 6:24 pm

Ansteuerung eines externen Bausteins mit Datenbus

Post by berndl666 »

hallo,

ich hab folgendes problem:
ich will (muss) mit einem iowarrior24 ein interface zu einem 24bit-Zählerbaustein (LS7166 von LSI, http://www.lsicsi.com/pdfs/LS7166.pdf) mit angeschlossenem Drehencoder realisieren.
Dieser Zähler hat einen 8-bit-Datenbus und die üblichen Chipselect-, Read/Write- und Control/Data- Pins.
Das Auslesen bzw. Parametrieren des Zählers erfolgt durch Anlegen von Befehlsbytes an den Datenbus mit anschliessendem pulsen der read bzw. write leitung(en, je nach gewünschter Funktion, siehe Datenblatt des LS7166). Alle Pegel sind 5V. Den Datenbus des Zählers hab ich an die P0-Leitungen des Iowarriors angeschlossen, die 4 Steuerleitungen an p1.0-p1.3 Soweit scheint ja alles klar und unproblematisch.

Nun das Problem: Nachdem es sich um einen 24bit Zähler handelt, geht das Auslesen nur in drei Zyklen á 8bit. Dazu ist es jeweils notwendig, entsprechende Steuerbits auf den Datenbus zu schreiben und dann die Steuerleitungen entsprechend zu pulsen. Dabei kommt mir aber dauernd die Logik des Iowarriors in die Quere, der nach Pegeländerungen an einem Pin Daten zurückmeldet. Die 3x8byte, auf die ich es eigentlich abgesehen habe, sind also immer zwischen anderen Reports "versteckt" (leider nicht immer an der selben Stelle), was ein Auswerten fast unmöglich macht.

Daher meine Frage: Hat jemand einen ähnlichen chip (bzw. einen Chip mit ähnlicher Logik) über einen IOwarrior bidirektional angesprochen und dabei Erfolg gehabt?
Ich habe die Schaltung ursprünglich mit dem USB-IO-Baustein von Elektor bzw. Modulbus realisiert und das hat gut geklappt.

Über Hinweise würde ich mich wegen wachsender Frustration mit dem IOWarrior sehr freuen!
Danke!
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: Ansteuerung eines externen Bausteins mit Datenbus

Post by Guido Körber »

Eine sichere Methode wäre es nach dem Setzen der Portpins mit einem iowkitReadImmediate den aktuellen Status der Pins abzurufen, dann kommt garantiert der aktuelle Zustand zurück.
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: Ansteuerung eines externen Bausteins mit Datenbus

Post by friend-of-rq »

Hallo berndl666,

ich würde die Funktion Report-ID 255 verwenden,

das heißt, Du forderst den aktuellen PORT-Status über die Report-ID 255 ( Pipe-1 ) an und
bekommst dann über Pipe-1 einen Report (ID=255) mit dem Status der Ports.

Auch beim Stack vom Pipe-1 solltest Du darauf achten, das dieser immer leer geräumt wird,
so lange abfragen bis Report-ID (0) kommt.

Schreiben/ändern der Ports machst Du nach wie vor über Pipe-0, die Meldungen über die Änderungen an den Ports (Pipe-0) , lässt Du einfach links liegen ...

Ich habe so mal einen ADC0816CCN (16-Kanal AD-Wandler) an einem IOW40 betrieben,
funktionierte problemlos, sind nur eine menge an Daten die Du an die Ports senden musst um einen CPU-BUS zu simulieren, mittlerweile verwende ich nur noch I2C-Bausteine am IOW ...

Gruss Ralf
Post Reply