LabVIEWForum.de
serielle Kommunikation mit DSP zickt - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: serielle Kommunikation mit DSP zickt (/Thread-serielle-Kommunikation-mit-DSP-zickt)



serielle Kommunikation mit DSP zickt - pumpkin - 07.10.2007 00:01

Hallo Forum,

ich habe ein für mich unerklärbares Problem beim Verbinden von DSP und
PC.

Also zum Problem:

Ich nutze LabVIEW um mir die Daten anzuschauen, als Basis habe ich ein
Beispielprogramm von NI.com genutzt (Advanced Serial Write and Read.vi).
Nur leider steigt die Anwendung immer wieder mit der Meldung

VISA: (Hex 0xBFFF006C) Während der Übertragung ist ein Überlauffehler
aufgetreten. Ein Zeichen wurde von der Hardware nicht gelesen, bevor das
nächste Zeichen ankam.


aus. Je größer der Eingangspuffer desto schneller. Das Verwirrende an
der Sache ist im angehängten screenshot zu sehen (2): Bevor die
Fehlermeldung das Progamm abbrechen lässt, ist wildes Gezappel 'auf der
Leitung' zu sehen. Wie im screenshot (1) zu sehen ist, sollte eine Rampe
von 0...255 zu sehen sein (das Fenster entspricht ~20s in der Breite).
Die Einstellungen von COM1 entsprechen denen im screenshot (1).

Meiner Meinung nach ist ein Fehler des DSP's und/oder seines Programmes
ausgeschlossen, wenn LabVIEW neu angestoßen wird läuft plötzlich wieder
die saubere Rampe (3) und HTerm läuft ohne Probleme (manchmal ist es bei
LabVIEW auch nötig den DSP kurz anzuhalten). Die Fehlermeldung und die
Tatsache, dass HTerm sauber läuft deutet ja auf eine Unzulänglichkeit
von LabVIEW hin.

Was vermutet ihr?

pumpkin


serielle Kommunikation mit DSP zickt - IchSelbst - 07.10.2007 09:11

' schrieb:Was vermutet ihr?
Keine Programmoptimierung.

115kBaud ist ja nicht gerade langsam. Ich gehe mal davon aus, der Datenstrom ist kontinuierlich ohne Pause zwischen den einzelnen Zeichen.

Poste zuerst mal (zumindest) den Codeteil, der die Serielle Schnittstelle bedient.


serielle Kommunikation mit DSP zickt - pumpkin - 07.10.2007 10:01

Den Rat von Helen Keller habe ich mit zu Herzen genommen und jetzt klappt es.Wink In der Tat waren es vergrisgnaddelte Einstellungen im VISA-Server und ein ungünstiges timing. Trotzdem Danke!

-----------------

Edit:

Mmmmh, zu früh gefreut. Die Applikation läuft jetzt um einiges stabiler, aber wenn nebenbei der MediaPlayer läuft und Tracks über das Netzwerk streamt tritt wieder der besagte Fehler auf (vor allem am Anfang eines Tracks wenn der Player den buffer füllt).

Im Anhang mal das VI. Kleine Erklärung: LV sendet eine 0x30 ('0'Wink an den DSP und der sendet daraufhin eine Rampe von 0..255 im Interruptmodus. Danach schaltet der DSP auf 'idle' bis die nächste 0x30 kommt. Nichts aufregendes also.

(VI LV 8.2)


serielle Kommunikation mit DSP zickt - IchSelbst - 07.10.2007 11:24

' schrieb:LV sendet eine 0x30 ('0'Wink an den DSP und der sendet daraufhin eine Rampe von 0..255 im Interruptmodus. Danach schaltet der DSP auf 'idle' bis die nächste 0x30 kommt.
Öhm, wieso programmierst du es dann nicht genau so?

'0' senden, warten bis 256 Zeichen da sind oder maximal 30ms, dann auslesen und anzeigen. So bekommst du eine Synchronisation auf Anwenderebene hin. Anderes besteht die Möglichkeit, dass du zwei '0' hintereinander sendest, ohne dazischen ein eiziges Zeichen zu empfangen.

Auf wie viele Bytes hast du denn den Eingangspuffer stehen? 4096 ist genug.

Ich gehe davon aus, dass der VISA-Treiber die Zeichen vom SIO-Controller auch ausließt, wenn der Rechner ausgelastet ist. Eigentlich müsste dann der Puffer zu klein sein respektive die auslesende Applikation zu langsam (weil der Rechner eben ausgelastet ist).