15.04.2014, 10:36
|
akr74000
LVF-Grünschnabel
Beiträge: 18
Registriert seit: Jan 2014
2012
2014
DE
|
RE: IRQ wird überhaupt bestätigt?
hallo cb,
du hast ja richtig geraten, ich benutzte das rs485 modul.
danke für die Antwort.
gruß
|
|
|
15.04.2014, 12:17
|
akr74000
LVF-Grünschnabel
Beiträge: 18
Registriert seit: Jan 2014
2012
2014
DE
|
RE: IRQ wird überhaupt bestätigt?
guten Tag cb,
was ich verstehen wollte, wenn fifo leer ist, werden "timed out" und IRQ gesetzt. wie läuft weiter in den RT.vi (read)
und wie ist es beim FPGA-Read (State).
ich bin wirklich durcheinander, beim write-state wurde vom Entwickler eine For-Loop und beim Read eine While-Loop,wieso?
für eine Antwort würde mich sehr freuen.
Gruß
|
|
|
15.04.2014, 16:48
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
RE: IRQ wird überhaupt bestätigt?
hi, die VIs bekomm ich nicht auf, dafür müsste ich erst mal die neuest LV-Version installieren und da bin ich grad viel zu faul für
Ich vermute mal er benutzt beim Schreiben die FOR-Loop weil er die Anzahl der Bytes ja genau kennt: er erzeugt ja im RT-VI eine wie auch immer geartete Zeichenfolge und da ist es ja ein leichtes zu ermitteln wie lang der String ist der gesendet werden soll.
Beim Lesen könnte es anders sein: die Anzahl der Bytes, die zurück kommt, ist nicht genau definiert. Dann muss man mit einer Abbruch-Bedingung arbeiten (Port Timeout, oder max. Anzahl Bytes, usw) und dafür nimmt man dann eine While-Schleife ...
viele Grüße
cb
|
|
|
15.04.2014, 17:53
|
akr74000
LVF-Grünschnabel
Beiträge: 18
Registriert seit: Jan 2014
2012
2014
DE
|
RE: IRQ wird überhaupt bestätigt?
HI cb,
ich erkläre dir wie ich verstanden habe, vielleicht liege ich falsch.
die Number of bytes wird von dem RT-vi durch die Länge des Strings an die for-Schleife ermittelt, die for-schleife schreibt die Daten von dem Puffer an dem Port, solange bis die Anzahl der Bytes erreicht wird.Dann setzt er Timed out flag, versucht er nicht das byte wieder zu schreiben?
oder direkt nach Timed out wird IRQ1 gesetzt?
Im Write-Vi ist aber anders, die daten werden auf dem FIFO geschoben, vergleicht die verbleibende leere Elemente im ersten FIFO mit einem leeren FIFO sozusagen, dann wird das IRQ1 bestätigt abschliessend mit IRQ-wait.wozu eigentlich diese invoke IRQ Wait? wird das zweite FIFO auf 0 gesetzt, um neue Aktion zu beginnen?
Den Sprung von FPGA auf RT verstehe ich nicht ganz genau. wenn du noch detaillierter noch erklärst würde mich sehr freuen.
Gruss
|
|
|
16.04.2014, 06:36
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
RE: IRQ wird überhaupt bestätigt?
(15.04.2014 17:53 )akr74000 schrieb: Den Sprung von FPGA auf RT verstehe ich nicht ganz genau. wenn du noch detaillierter noch erklärst würde mich sehr freuen.
Gruss
das sind 2 getrennte VIs, die auf 2 unterschiedlichen Prozessoren laufen, das eine auf der CPU des cRIOs, das andere im FPGA. Damit die beiden VIs zusammenarbeiten müssen sie irgendwie kommunizieren. Dieser Daten-Austausch läuft über den FIFO. Das RT-VI ist der "Boss" und sagt dem FPGA-VI was es tun soll, und das FPGA-VI meldet per IRQ wenn es die Arbeit erledigt hat.
Die Write-Schleife läuft immer für "Number of Bytes" Iterationen, da sie keine Abbruch-Bedingung hat, auch dann wenn der FIFO leer ist. Wenn der FIFO leer ist, dann wartet er für 50 Tics darauf dass noch ein Byte reinkommt, tut es das nicht meldet er einen Timeout. Beim ersten Timeout wird das Schreiben auf den Port durch die Case-Struktur unterbunden. Alle weiteren FIFO-Read-Operationen für die restlichen Iterationen der For-Schleife werden ebenfalls durch die äußere Case-Struktur unterbunden.
Wenn die For-Schleife im Write-Case beendet ist springt die Sequenz einen Rahmen weiter zum IRQ Wait. Dort wird der IRQ an das RT-VI gesendet und drauf gewartet dass das RT-VI den IRQ bestätigt.
Die Funktion bei der 0 Daten in den FIFO geschoben werden ist eine "Krücke", da es keine eigene Funktion dafür gibt abzufragen wieviel Bytes noch im Puffer sind. Mit der Information wieviel Bytes noch im Puffer sind wird überprüft, ob der FIFO auch tatsächlich leer ist (=überflüssig, in 99,99999% der Fälle ist er leer.)
Im Prinzip wartet das FPGA VI nach dem Start immer beim IRQ (wie der erste Durchlauf der äußeren While-Loop aussieht hab ich schon beschrieben). Dann kann man vom RT-VI aus einstellen was es machen soll: lesen oder schreiben. Wenn man was schreiben will, schickt man vorher die Bytes in den FIFO und gibt mit dem Bestätigen des IRQ den Start-Schuss. Beim Lesen gibt man ebenfalls mit dem Bestätigen des IRQ den Startschuss, und wartet dann so lange bis der nächste IRQ kommt, damit sind dann entweder die gewünschte Anzahl Bytes empfangen worden oder es ist ggf. auch ein Timeout aufgetreten der analog zum Schreiben behandelt wurde.
viele Grüße
cb
|
|
|
16.04.2014, 09:05
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: IRQ wird überhaupt bestätigt?
@Christian:
Hier mal alle 3 Fälle des FPGA VIs als Screenshot:
@akr: Wieso hast du die ganzen Kommentare erstens: nicht gelesen - und zweitens: in deinen Screenshots gelöscht?
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
16.04.2014, 10:36
(Dieser Beitrag wurde zuletzt bearbeitet: 16.04.2014 10:42 von akr74000.)
|
akr74000
LVF-Grünschnabel
Beiträge: 18
Registriert seit: Jan 2014
2012
2014
DE
|
RE: IRQ wird überhaupt bestätigt?
(16.04.2014 09:05 )jg schrieb: @Christian:
Hier mal alle 3 Fälle des FPGA VIs als Screenshot:
@akr: Wieso hast du die ganzen Kommentare erstens: nicht gelesen - und zweitens: in deinen Screenshots gelöscht?
Gruß, Jens
hi christian,
die Kommentare waren nicht nutzlich.
gruß
hallo cb,
danke noch mal für die Antwort.
im Write-RT-Vi wird irgendwas auf dem FIFO geschoben, und wird das IRQ gesetzt, in dem FPGA-Vi startet Write-state und liest die daten vom dem FIFO an dem Port?
gruß
|
|
|
16.04.2014, 11:21
(Dieser Beitrag wurde zuletzt bearbeitet: 16.04.2014 11:22 von cb.)
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
RE: IRQ wird überhaupt bestätigt?
der IRQ wird immer gesetzt so lange die While-Schleife läuft
im "idle"-Case, da passiert nichts und der IRQ wird sofort gesetzt
im "write"-Case wird der IRQ gesetzt nachdem die For-Schleife die festgelegte Anzahl Iterationen durchlaufen hat
im "read" Case, nachdem der EoS (vermutlich End of STransmission) Char erkannt wurde, die festgelegte Anzahl Bytes Empfangen wurde oder nachdem das RS485-Modul nichts empfangen hat und einen Timeout gemeldet hat.
Der die "Send IRQ" Funktion in VErbindung mit dem Warten auf Bestätigung ist sozusagen der Synchronisations-Punkt bei dem sich RT-VI und FPGA-VI treffen ...
viele Grüße
cb
P.S. mit "@Christian" meint "jg" mich ... wir kennen uns schon was länger und er kennt meinen Vornahmen ...
|
|
|
16.04.2014, 12:19
(Dieser Beitrag wurde zuletzt bearbeitet: 16.04.2014 12:28 von jg.)
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: IRQ wird überhaupt bestätigt?
(16.04.2014 10:36 )akr74000 schrieb: die Kommentare waren nicht nutzlich.
Also ich finde die Kommentare SEHR nützlich!
Gruß, Jens
Und da die Kommentare so nützlich sind, hier Screenshots der Blockdiagramme der 3 RT-VIs
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
| |