So!
Habe jetzt ein Paar Sachen verändert, lokale Variablen des Stopp Buttons in alle Schleifen verteilt. Das VI stoppt allerdings dennoch nicht. Habe den Timeout Terminal der Case Struktur verbunden, brachte auch keine Veränderung.
Soll jetzt auch nicht das perfekte Programm werden, aber der Stopp Button würd mir schon helfen. Um die anderen Vorschläge werde ich mich jetzt noch kümmern.
Vielen Dank
Thomas
Hallo Thomas,
das VI kann auch nicht beendet werden, dein FIFO read hat einen Timeout von -1.
was passiert wenn keine Werte im FIFO sind, er wartet bis er welche bekommt. deine Fifos müssen einen anderen Timeout bekommen.
Oder kannst du 100% sichern sein das du immer Werte im Fifo hast??
Zumindest sieht es für mich so aus, als würden deine FIFOs auf Daten warten.
Und warum hast du die For-Schleifen mit einem Count von 31999 versehen, welchen Grund hat das??
Willst du Pro Datei 32000 Werte haben??
Gruß Tim
Hallo Tim,
die 32000 Werte pro Datei sind dafür gedacht, dass meine erzeugten Dateien nicht allzu groß werden und auch noch problemlos von z.B. Excel geöffnet werden können.
OK, dass die FIFOs dann so lange auf Daten warten und deswegen nicht so leicht beendet werden können ist natürlich einleuchtend. Nur hatte ich etwas Probleme beim Setzen der richtigen TimeOuts. Bin da aber auch noch nicht ganz fit. Den TimeOut auf -1 zu stellen hatte ich aus einigen Beispielen, auch von der NI homepage.
Gruß
Thomas
Sodala,
ich habe dein VI etwas umgebaut und ganz unten ein beispiel programmiert.
Das Beispiel ist nicht perfekt und ich könnte noch hunderte dinge verbessern aber für den Anfang sollte es reichen.
Das Enum solltest du nur als TypDef anlegen und gucken ob das timing schnell genug ist. welches das Intervall zum auslesen des DMAs bestimmt.
Falls der FPGA zu schnell in den DMA schreibt könntest du auch, statt nur einen Wert aus dem DMA zu lesen mehrer Werte auslesen und speichern.
Weiterhin solltest du auch die DMA "Tiefe" festlegen, bevor du loslegst.
Abluf wäre so:
1. fpga Bitfile laden
2. Run FPGA
3. DMA tiefe festlegen
4. DMA starten
5. IRQ auslösen ( der FPGA geht noch nicht in seine Sequencen rein sondern wartet bis der IRQ ausgelöst wurde, so weißt du das der FPGA noch nicht versucht daten in den DMA zu schieben beovr der DMA nicht konfiguriert ist)
Gruß
Tim
und hier in 8.5