zulässig?

  • hallo,


    ist das zulässig bzw. möglich ?!?!


    DEF test1 ( )


    INI


    BOOL Test_var1


    INTERRUPT DECL 17 WHEN $FLAG[1]==TRUE DO Test_var1=TRUE


    .
    .
    .
    .
    .

    Einmal editiert, zuletzt von wackstar ()

  • Schritt für Schritt zum Roboterprofi!
  • Hi,


    laut Doku muß ein Unterprogramm-Name (und ggfls. Parameter) in der
    Interrupt-Deklaration angegeben werden.
    (INTERRUPT DECL Priorität WHEN Ereignis DO Unterprogramm)
    Bei dir ist das aber eine Anweisung, von daher wird das so nicht
    funktionieren...


    ...und selbst wenn du eine Interrupt-Routine schreiben würdest,
    in der Test_var1 by reference übergeben und manipuliert werden soll
    würde es nicht funktionieren, weil (unterprogramm-)lokale Variablen
    nicht an Interrupt-Routinen übergeben werden dürfen.
    (oder soll test1() kein UP sein ?)


    gruß
    rmac

    Einmal editiert, zuletzt von rmac ()

  • Code
    INTERRUPT DECL 17 WHEN $FLAG[1]==TRUE DO Test_var1=TRUE


    Ist nicht zulässig, da als Reaktion auf einen ausgelösten Interrupt eine Interruptroutine verwendet werden muss.



    Ist auch nicht zulässig, da einer Interruptroutine keine Laufzeitvariablen übergeben werden können. (Test_var1 müsste also eine globale Variable sein.)



    Das würde ich sowieso nicht so kompliziert mit einem Interrupt machen. Sondern einfach mit einem $CYCFLAG:


    Dann heisst deine verwendete Variable einfach nicht Test_var1 sondern $CYCFLAG[irgendeineNr].


    Das geht natürlich nur, wenn du nicht auf die einmalige Flankentriggerung angewiesen bist. Sonst müsste das noch ein bischen komplizierter gemacht werden oder aber eine Test_var1 als eine globale Variable deklariert werden.

    Einmal editiert, zuletzt von simeonw ()

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden