LabVIEWForum.de
Takt generieren - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW FPGA (/Forum-LabVIEW-FPGA)
+---- Thema: Takt generieren (/Thread-Takt-generieren)



Takt generieren - PxCE_HB - 25.07.2016 13:51

Hallo,

ich bin derzeit dabei ein Programm zu erstellen, mit dem ich aus dem cRIO-9074 (mit DI-Modul NI-9411 und DO-Modul NI-9474) ein Pulse Pattern Generator erstelle. Also in der Host-VI lässt sich eine Frequenz und eine Anzahl von Perioden einstellen. Diese Werte werden dann an die FPGA-VI übergeben, um dort die Ausgänge zu schalten. An sich ist mein Programm auch funktionsfähig, allerdings werden sporadisch nicht immer die eingestellten Perioden gesendet, sonder weniger. Werden z.B. 100 Perioden eingestellt, so werden nur 99 gesendet. Dies sehe ich zum einen auf einem Oszilloskop und zum anderen an einem Gerät mit dem ich die Flanken zähle.
Wenn ich anstatt von 100 gewünschten Perioden 10 einstelle, dauert es länger bis der Fehler auftritt, also das nur 9 Perioden gesendet werden, aber er tritt dennoch auf.
Was mich außerdem wundert ist, dass in der tdms-Datei die ich erstelle, in der der Wert der ausgegebenen Perioden gespeichert wird, immer der eingestellte Wert steht. Also auch wenn nur 99 Perioden gesendet werden, wird eine 100 in der tdms-Datei abgespeichert. Daraus schließe ich eigentlich, dass das Programm auf dem FPGA richtig arbeitet, aber am Ausgang fehlt halt die eine Periode.
Der Quellcode des FPGA-Programms der Code des Programms welches auf dem Host befindet sich im Anhang.
Hast jemand eine Idee woran das liegen könnte?


RE: Takt generieren - GerdW - 25.07.2016 15:04

Hallo Px,

lass doch mal das "Rücksetzen" des FPGAs weg - und spendiere diesem eine MainLoop, die IMMER und EWIG läuft!

Dann eben über ein Flag (= boolscher Wert) die Takterzeugung neu starten…


RE: Takt generieren - jg - 25.07.2016 15:20

Offtopic2
Deine Gesamttaktlänge stimmt nicht ganz, da du 2x mit Wait arbeitest. Die While-Loop und das Setzen der DOs kosten aber auch ein paar Ticks (While Loop: 2 Ticks, DOs: Hängt von der Karte ab). Wenn du da auf Nummer sicher gehen willst, dann füge noch am Beginn einen Sequenzschritt hinzu, in dem du ein Loop-Timer-VI platzierst.

Gruß, Jens