-
        

Ergebnis 1 bis 9 von 9

Thema: Interrupt bei Tastedruck

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    29
    Beiträge
    470

    Interrupt bei Tastedruck

    Anzeige

    Hallo Leuts, ich hab ein Prob,
    ich will mit einem Tastendruck einen Interrupt aufrufen.
    Ich kann doch schlecht den counter interrupt einschalten, den counter auf maximal minus 1 setzten, das er beim Tastendruck "überläuft". Das muss doch auch anders gehen. Ach kann man den eingang dan auch intern bzw. softwaremäßig entprellen, oder muss ich des Hardwaretechnisch lösen?
    Danke schon mal für eure Antworten!

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    29
    Beiträge
    470
    OK, das mit dem Interrupt hat sich erledigt, aber das problem mit dem entprellen steht noch aus wie macht ihr das so ( generel )????????????

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo Nikola,

    > das problem mit dem entprellen steht noch aus wie macht ihr das so ( generel )????????????[/quote]

    meist häng ich 'nen RC-Tiefpass zwischen Taster und Eingang. Geht aber auch digital im Controler.

    Der Mensch kann Tasten nicht schneller als 10 mal / Sekunde drücken.

    Man kann also entweder in der Tastaturabfrage eine Pause von 50 - 100 ms einlegen, oder, falls der Taster an einem externen Interrupt hängt, schaltet man den externen Interrupt in der Interrupt Routine ab und startet einen Timer, der ihn nach 50 - 100 ms wieder einschaltet(*).

    Die Zeit die man wartet/abschaltet ist recht unkritisch. Zu lang sollte sie nicht sein, sonst wirkt die Tastatur träge, zu kurz aber auch nicht, sonst ist der Schalter noch am prellen wenn man beginnt ihn wieder abzufragen.

    Wenn man nur eine Tastenflanke haben möchte, dann sollte man die Taste nach der Wartezeit oder in der Timer-Routine nochmal auslesen. Sonst kann man nicht unterscheiden, ist es nun ein Prellen beim Taste-Drücken oder ein Prellen beim Taste-Loslassen.

    Ciao
    Werner

    (*) Den Interrupt selbst abschalten, nicht global alle Interrupts.
    z.B. "Disable INT0" falls Taster an INT0 hängt

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    29
    Beiträge
    470
    OK, das war ein wichtiger Sicherheitshinweis
    Ghost Busters

    Danke, ich hätte doch glad alle Interrupst gedisabled.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.09.2004
    Beiträge
    135
    Zitat Zitat von teslanikola
    OK, das mit dem Interrupt hat sich erledigt, aber das problem mit dem entprellen steht noch aus wie macht ihr das so ( generel )????????????

    wie hast du das mit dem interrupt nun gelöst? bei mir hängen alle taster an portb des atmega16 und da gibt es ja bekanntlich keinen INTx eingang :/ geht das trotzdem irgendwie per interrupt?
    Mit freundlich Grüßen
    Adam

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    29
    Beiträge
    470
    DEN NEHM ICH NED FÜR SO NE APPLICATION.

    Es heist ja, das es für jede App. den rechren chip gibt, wies da geht weis ich ned. Kannste aber gerne den Thread hir usen ( ineressiert ne au )

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo Adam

    bei mir hängen alle taster an portb des atmega16 und da gibt es ja bekanntlich keinen INTx eingang :/ geht das trotzdem irgendwie per interrupt?
    geht, aber nicht ohne externe Beschaltung.

    Je nach Anschluß verknüpfst Du alle Tasten UND oder ODER. Mit dem verknüpften Signal gehst Du auf den externen Interrupt.

    Der Interrupt wird dann ausgelöst, wenn sich EINE Taste geändert hat. Welche das ist, fragst Du in der Interrupt Routine ab.

    Sollte man imo aber nur machen, wenn man die Resourcen sowieso frei hat. So langsam wie der Mensch als Eingabegerät ist, reicht es normalerweise die Tasten alle Jubeljahre mal abzufragen.

    Ciao,
    Werner [/quote]

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    05.04.2005
    Beiträge
    6

    Entprellen

    Hi,

    kleiner Tipp zum Entprellen:
    Sollte, wenn Du mit Bascom arbeitest mit dem Befehl "Debounce" klappen.

    Gruss


    Andi

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124

    Re: Entprellen

    Hallo Andi,

    > Sollte, wenn Du mit Bascom arbeitest mit dem Befehl "Debounce" klappen.

    Dafür ist der Befehl da!
    Allerdings dedektiert er den Tastendruck nicht - man muß pollen, oder doch per ext.Int. springen, und er fügt ein 25ms wait ein, was wiederum recht lässtig sein kann, falls man noch anderes zu tun hat.

    Ciao,
    Werner

Berechtigungen

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