Daten von IO Warrior an den Rechner schicken??

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
MaleYAK
Posts: 3
Joined: Thu Mar 10, 2005 4:36 pm

Daten von IO Warrior an den Rechner schicken??

Post by MaleYAK »

Folgendes Problem. Ich habe an den IO Warrior port P0.0 einen selbstgebauten controller angeschlossen. Der Controller funktioniert und liefert mehrere Bytes an den Port.
Jetzt wenn ich versuche die Bytes an den Rechner zu senden, kommt nur ein Byte an. und das nur wenn ich den controler resete.

Die funktion, der microprocessor lifert Daten nehmen wir die zahlen von 0 bis 5 und legt sie nacheinander an port p0.0 mit jewails einet Wait period zwischen den Zahlen. Nun soll der Controller die Zahlen an den Rechner schicken. Auf dem Rechner ist eine C++ Schleife mit der Funktion ReciveData() als endlos loop implementiert. Starte ich das C++ Programm und dann den Microcontroler erhalte ich nur den ersten wert... obwohl der micrprocessor immer noch in einer Schleife die Werte 0 bis 5 auf den port legt. resete ich den microprocessor wird wieder der erste wert geschickt.

Starte ich den Microprocessor als erstes und dann das C++ Programm kommt gar nichts an obwohl die daten an dem Port anliegen, erst wenn ich den MP resete kommt wieder nur der erste wert

Wie ist eigentlich die komunkation zwischen Rechner und IO warrior. muss nach empfang eines bytes irgendwas and den Warrier gesendet werden oder erkennt der warrior wenn sich an den Ports was ändert und sendet es and den rechner... was hier nicht funktioniert denn der port ändert sich ale 2 sek.

Für Hilfe wäre ich sehr Dankbar
supachris
Posts: 124
Joined: Tue Mar 16, 2004 12:30 am
Location: Dresden

Post by supachris »

Wie schnell schickst du denn die Daten? Der IOW is ja nun mehr als langsam, ich nehme an, du überfährst den völlig. Der hat auch keinen FIFO drin, wo die Werte gepuffert werden können. Besser wäre, du schickst immer eine Anforderung, dass du den neuen Wert haben willst, und wartest dann auf diesen. Du kannst maximal 125 Reports pro Sekunde übertragen, will heißen, den µC muss mindestens 8ms warten bis der den nächsten Wert schicken kann. Für solche Datenübertragung ist das ja nicht ausgelegt, da wäre vielleicht ein FTDI 245 besser, der hat nen FIFO drin, und richtige Übernahme-Leitungen. Soll jetzt kein Abwerben sein, hoffe, mich haut keiner *duck*
MaleYAK
Posts: 3
Joined: Thu Mar 10, 2005 4:36 pm

Post by MaleYAK »

Ich denke nicht das der uC zu schnell ist. Also ich schicke zb 0x01 nach 2 sek liegt dan am port 0x02 nach weteren 2 sek 0x03 und so weiter bis loop wieder von vorne beginnt.
Im C++ code offne ich den USB Port und versuche die Daten die am warrior port anliegen auszulesen doch es wird nur der erste wert immer gelesen. die anderen will er nicht mehr. ????????????????
supachris
Posts: 124
Joined: Tue Mar 16, 2004 12:30 am
Location: Dresden

Post by supachris »

Achso...hmm...ja dann weiß ich auch nicht. Hast du mal ReadImmediate() probiert? Das sollte eigentlich gehn...
MaleYAK
Posts: 3
Joined: Thu Mar 10, 2005 4:36 pm

Post by MaleYAK »

Ich dachte zuerst dass der uC durch eine interupt das Anlegen des weiteren Bytes verhindert doch dem ist es nicht so der uC läuft schön weiter. Nur wie gesagt Die Read() funktion liest nur ein Wert raus also der 32 Bit lang ist,(man kann dann den p0.0 oder p0.1 daraus wert rausfiltern) dann kommt wieder eine Read() Anweisung, auch wenn der selbe wert am IO warrior anliegt wird er nicht gelesen.
Muss man da nach jedem lesen den Usb port wieder schliessen??? oder einen Status senden, dass die Übertragung erfolgreich war und dass er das zweite mal Read() ausführen kann.
supachris
Posts: 124
Joined: Tue Mar 16, 2004 12:30 am
Location: Dresden

Post by supachris »

Nö, musst du nicht. Bei mir geht das auch durchgehend...hatte mal was gebaut, wo ich so ne Schleife drin habe und den IOW mit ReadImmediate immer polle. Ging super.
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Also wenn sich an den Eingängen des IO-Warrior was ändert sendet der auch die Daten. Sind die Ausgänge vielleicht auf 0 gesetzt?
Post Reply