-
        
+ Antworten
Ergebnis 1 bis 7 von 7

Thema: M-Unit und Interrupt zur Motorsteuerung

  1. #1

    M-Unit und Interrupt zur Motorsteuerung

    Tach allerseits,
    hat jemand Erfahrung mit dem IRQ-Eingang der M-UNIT?

    Habe ein ganz einfaches Programm geschrieben zum Erzeugen und Zählen von Impulsen.
    Auf dem IRQ liegt ein ca 10Hz-Rechtecksignal, mind. 25 Hz wären schön, aber auch den langsamen Takt verträgt das Programm nicht.
    Das Programm ist ohne Fehlermeldungen kompiliert und geladen.
    Problem: planlose Sprünge in Routine "Reset", obwohl die Sprungbedingung nicht erfüllt ist.
    Harware gründlich gemessen, alle Ein-?Ausgänge ok?

    Seht Ihr meinen Fehler?

    define sens port[8]
    define cnt word
    define speed word
    define stop 100

    interrupt count
    speed=1500
    cnt=0

    ' beep speed,0,0
    #loop
    if sens then gosub reset
    if cnt>stop then gosub ende
    goto loop

    #ende
    ' beep 0,0,0
    pause 100
    ' beep speed,0,0
    return

    #reset
    print cnt
    cnt=0
    return

    #count
    cnt=cnt+1
    return interrupt

    -

  2. #2
    RN-Premium User Begeisterter Techniker
    Registriert seit
    30.04.2004
    Alter
    39
    Beiträge
    245
    Hm, ich hatte zwar nur kurz eine m-control aber rein prinzipell fällt mir diese Zeile auf:
    if sens then gosub reset
    Ich würde da auf jeden Fall if sens=ON schreiben.
    Weiters empfiehlt es sich, sens nocheinmal definitiv als eingang zu definieren, mit DEACT sens.

    sonst fällt mir erstmal nichts auf.

    lg

    Alex

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.03.2004
    Ort
    Paderborn
    Alter
    32
    Beiträge
    614
    Wenn der planlos (meint wohl unregelmäßig) nach Reset springt, könnte Sens, undefiniert sein. Hast du da einen Pulldown angeschlossen?
    it works best if you plug it (aus leidvoller Erfahrung)

  4. #4
    Gast
    "Deact", "ON" und dergleichen werde ich noch testen.
    Pull-ups sind immer dabei, auch bei unbenutzten Ein-/Ausgängen

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.03.2004
    Ort
    Paderborn
    Alter
    32
    Beiträge
    614
    Pull-ups sind immer dabei, auch bei unbenutzten Ein-/Ausgängen
    PullUPs und ein Taster gegen Vcc? Wenn du nach ON fragst, müsste dein Taster ja den Port auf Vcc legen und dein Pullup auch. Dann ist der immer an und der springt immer zu Reset. Du brauchst für ein definiertes OFF bei offenem Taster einen Widerstand gegen GND (pullDOWN).
    it works best if you plug it (aus leidvoller Erfahrung)

  6. #6
    Gast
    verehrter Gottfreak
    vielen Dank für Deine Antwort. Ich habe etwas schlampig gefragt.

    mein Taster ist eine Lichtschranke Licht frei>> Phototransi ist niederohmig, Reset ist OFF. Deshalb meine Abfrage nach ON.
    Die Resetroutine ist nicht das Problem und funktioniert einwandfrei.
    Die Zickerei beginnt, sobald ich den Interrupt benutze.
    Hast Du Erfahrung mit Assembler? Ist es vielleicht sinnvoll, den Interrupt direkt mit Assembler auszuwerten?

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    41
    Beiträge
    849
    Also die Interrupt-Routine reagiert nur auf die negative Flanke. Bleibt das Signal statisch passiert erst mal gar nichts.
    Aber die Zeile:
    if sens then gosub reset
    würde ich auf jeden Fall durch
    if sens = on then gosub reset
    ersetzen. Das ist wohl sicherer und die einzigste Möglichkeit für die Sprünge. Eine andere Möglichkeit wäre ein fremdes Signal das den Interrupt-Pin dauernd sehr schnell auslöst. Solltest das Signal einmal messen und mit einem Schmitt-Trigger vorschalten. Dann dürfte es funktionieren.

    Grüsse Wolfgang

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •