Puffer beschreiben

Zuviel Werbung?
-> Hier kostenlos registrieren
Okay, dann ist das nun mein endgültiger Code (hoffentlich):
Code:
       L    #Ptr
       LAR1
       L    #NeuerWert
       T    MW [AR1,P#0.0]

       L    #Ptr
       L    P#        2.0
       +D
       T    #Ptr

       L    #Pufferlaenge
       L    2
       *I
       SLD            3
       L    P#       40.0
       +D
       T    #EndePtr

       L    #Ptr
       L    #EndePtr
       >=D
       SPB  VOLL
       SPA Ende

VOLL  :NOP  1
       S    #PufferVoll
       R    #PufferFrei
 
Ende  :NOP  0
Warum aber nun ein absoluter Sprung verwendet wird, statt einfach nach SPB VOLL ein BE zu notieren, ist mir noch unklar.

Ansonsten vielen Dank für eure Hilfe!

Gruß -PHANTOMIAS-
 
funktionell nicht, aber die bausteingröße hängt davon ab ... allerdings nur geringfügig :rolleyes:

aber wenn der sprung zu end schon mal vorbereitet ist kann man da ja dann gleich weiter proggen - was? findet sich schon was!
Ich bevorzuge auch die Version mit dem Sprung. Genau aus dem selben Grund, falls man mal etwas weiter programmierne will. Die Bausteingrösse ist mir in dem Zusammenhang völlig egal.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Okay, wenn wir grad bei Sprüngen sind (OB1) :)
Code:
       U    "PufferFrei"                 // Puffer ist freigegeben
       UN   "PufferVoll"                 // Puffer ist nicht voll
       U    "NeuerMW"                    // Neuer Messwert
       FP   "FlankeNeuerMW"              // liegt als positive Flanke an
       SPB  ScPu
       BE
ScPu  :NOP  1
       L 5
       T "PufferLang"
       CALL "SchreibePuffer"
         NeuerWert:="AblNeuMW"
         Pufferlaenge:="PufferLang"
         PufferVoll:="PufferVoll"
         PufferFrei:="PufferFrei"
         Ptr:="Pointer"
         EndePtr:="EndePointer"
       BE

       CALL "Blinkmeldung"
         Blink_Takt:="Blinktakt"
         Puffer_Voll:="PufferVoll"
         Blink_Ausgang:="Blinkmeldung"


       U "PufferVoll"
       FP "FlankePufferVoll"
       SPB Zeit
       BE
Zeit   :NOP 1
       CALL "Zeitenauswertung"
         Zeiger_Anfang:="Pointer"
         Zaehler_Werte:="Wertzaehler"
         Laenge_Puffer:="PufferLang"
         Anzahl_Werte:="AnzahlWerte"

BEA
Wenn ich in ScPu reinkomme, wie geht es dann weiter? Ich müsste zurückkommen und dort das BE beendet das alles oder komme ich zum CALL "Blinkmeldung" und anschließend zu U "PufferVoll" ... ?
In "Blinkmeldung" will ich bei jedem Durchlauf des OB1 kommen, in "Zeitenauswertung" immer wenn die Flanke anliegt.

Zumindest ist es das was ich erwarte :)

Gruß -PHANTOMIAS-
 
NEE!

der OB1 endet bei dir auf jeden fall spätestens nach "SchreibePuffer" (... wenn ENO richtig belegt ist ... ) ... wie auch immer: "Blinkmeldung" wird nie aufgerufen!

am besten: vergiss BE im OB1 ... besser is das! mach ne sprungmarke end und da springste im zweifelsfalle hin.

glaube ein verständnisproblem zu erkennen: BE bedeutet zwar bausteinende, aber es beendet den aktuellen baustein! also, ich probier es mal, ein BE in "SchreibePuffer" beendet die abarbeitung vom Baustein "SchreibePuffer" und die abarbeitung wird in dem aufrufenden baustein, in deinem fall OB1 fortgesetzt. das BE in deinem OB1 beendet den OB1 und dieser wird vom start abgearbeitet.
 
Zuletzt bearbeitet:
Okay, ich hoffe ich habe es verstanden und dieser Code im OB1 wird das so machen wie ich es gerne hätte:
Code:
       U    "PufferFrei"                 // Puffer ist freigegeben
       UN   "PufferVoll"                 // Puffer ist nicht voll
       U    "NeuerMW"                    // Neuer Messwert
       FP   "FlankeNeuerMW"              // liegt als positive Flanke an
       SPB  ScPu
       SPA  TuEs

ScPu  :NOP  1
       L 5
       T "PufferLang"
       CALL "SchreibePuffer"
         NeuerWert:="AblNeuMW"
         Pufferlaenge:="PufferLang"
         PufferVoll:="PufferVoll"
         PufferFrei:="PufferFrei"
         Ptr:="Pointer"
         EndePtr:="EndePointer"

TuEs: NOP 1
       CALL "Blinkmeldung"
         Blink_Takt:="Blinktakt"
         Puffer_Voll:="PufferVoll"
         Blink_Ausgang:="Blinkmeldung"


       U "PufferVoll"
       FP "FlankePufferVoll"
       SPB Zeit
       SPA Ende
Zeit   :NOP 1
       CALL "Zeitenauswertung"
         Zeiger_Anfang:="Pointer"
         Zaehler_Werte:="Wertzaehler"
         Laenge_Puffer:="PufferLang"
         Anzahl_Werte:="AnzahlWerte"

Ende   :NOP 1
Gruß -PHANTOMIAS-
 
Zurück
Oben