- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: Taster per Interrupt nutzen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.07.2008
    Beiträge
    10

    Taster per Interrupt nutzen

    Anzeige

    E-Bike
    Hallo zusammen,

    ich bin recht neu in dem Thema Assembler und sitze seit Stunden vor einem Problem (wahrscheinlich liegts an meiner Logik )

    Und zwar sollen wir (für die Uni) ein Programm schreiben, welches bei Drücken einer Taste anfängt eine Zahl zu inkrementieren (bis 6--> Würfel) und bei erneutem Drücken der selben Taste stehenbleibt und dies aktuielle Zahl ausgibt.

    Interrupt-Abfrage habe ich hinbekommen, aber wie mache ich es, dass beim zweiten Auslösen desselben Interrupts eine andere Routine abläuft ?

    Übrigens nutzen wir keine echte Hardware sondern eine Simulator-Software von Oshonsoft.

    Per polling habe ich zuvor hinbekommen, da habe ich einfach in einer Schleife den Bit-Zustand des Tasters geprüft und bei Änderung verzweigt.

    Aber wie per Interrupt......

    Gruss,
    Lalas

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    70
    Beiträge
    622
    Hallo Lalas,

    das Stichwort dazu heißt "(finite) state machine [FSM]" = "Zustandsautomat". Wenn Du danach suchst, findest Du passende allgemeine Lösungsansätze. Den Rest Deiner Hausaufgaben wirst Du schon selbst erledigen müssen.

    Oft wird der Zustandsautomat in der Hauptschleife des Programms realisiert, jedenfalls die entsprechenden Verzweigungen. Díe Zustände selbst (z.B. als Bits in einer Variablen) kannst Du z.B. innerhalb der Interrupt-Service-Routine ändern.

    Viel Erfolg dabei!

    Fred
    Only entropy comes easy. - Anton Checkhov

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    01.07.2008
    Beiträge
    10
    Ich glaube Automaten-Theorie ist etwas zu weit gegriffen für den Lösungsansatz den wir verfolgen sollen.

    Gibt es keine "einfache" Möglichkeit quasi folgendes Schema in Assembler umzusetzen:

    Drücke Taste ---> inc Zahl bis 6 ---> setze Zahl auf 1 und inc wieder bis 6 ---> solange Taste gedrückt wird

    Da muss es doch irgendwas geben

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    70
    Beiträge
    622
    Hallo Lalas,

    Zitat Zitat von lalas
    Ich glaube Automaten-Theorie ist etwas zu weit gegriffen für den Lösungsansatz den wir verfolgen sollen.

    Gibt es keine "einfache" Möglichkeit quasi folgendes Schema in Assembler umzusetzen:

    Drücke Taste ---> inc Zahl bis 6 ---> setze Zahl auf 1 und inc wieder bis 6 ---> solange Taste gedrückt wird...
    damit hast Du doch genau den Automaten beschrieben, den Du benötigst!

    Viele Grüße

    Fred
    Only entropy comes easy. - Anton Checkhov

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    01.07.2008
    Beiträge
    10
    Ich habe es geschafft

    Wobei ich es wohl recht trivial gelöst habe;

    Ich lasse den Zähler (von 1 bis 6) in der main-Routine einfach laufen und unterbreche den nur per interrupt.
    Ich muss somit nicht irgendwelche Abbruchbedingungen prüfen etc.

    Mal sehn ob mein Professor mir das so abnimmt....

Berechtigungen

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

LiFePO4 Speicher Test