mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tastatur mit Interrupt


Autor: Matthias A. (pixeltiger)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte bei meinem AVR-Projekt eine Tastatur bauen, bei der bei jedem 
Tastendruck (also egal welche Taste) zusätzlich ein Hardwareinterrupt 
ausgelöst wird. Die Interruptroutine soll dann nachschauen, welcher Pin 
auf LO gesetzt wurde und entsprechend reagieren.
Dazu habe ich folgende Schaltung entwickelt - das Problem, sie 
funktioniert leider nicht so wie sie soll. Taste 1 (ganz links 
funktioniert aber bei allen anderen werden entweder alle oder 
irgendwelche Pins ausgelöst und ich verstehe nicht so richtig warum.
Man könnte das Problem natürlich umgehen, indem man den Interrupt-Pin 
durch Optokoppler galvanisch trennt. Das geht auch - habs ausprobiert, 
mir wäre allerdings eine einfachere Lösung mit Dioden lieber.
Kann mir jemand helfen?

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problematisch werden die Flussspannungen der Dioden. Bei 3 Dioden kommen 
schon ca 2 Volt zusammen, was nicht mehr für definierte Pegel am 
Interrupt reicht.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>das Problem, sie funktioniert leider nicht so wie sie soll.

Dann überlege doch z.B. mal, welcher Pegel an P1 anliegt, wenn der 2. 
Schalter geschlossen ist.

MfG Spess

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird P3 gedrückt, werden über die Dioden auch P2 und P1 low gezogen. 
Ähnlich mit P2 und P1.

Spar' Dir die vertikalen Dioden und mache je eine Diode vom 
Interrupt-Eingang zu jedem der Taster (also Anode aller Dioden gemeinsam 
an Interrupt, Kathoden an den jeweiligen Taster).

Bei einigermaßen aktuellen AVRs kann übrigens jeder Eingangspin einen 
Interrupt auslösen (PCINT).  Deine Mimik wäre dort überflüssig.  Also 
wenn's ein ATmega8 ist, einfach die Altlast entsorgen, auf den ATmega88 
umsteigen und die Dioden sparen.

Autor: Spezi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und an das Entprellen der Tasten denken.
Mechanische Kontakte prellen; deswegen verwendet man normalerweise 
keinen externen Interrupt für Taster (er würde mehrfach ausgelöst), 
sondern macht die Abfrage (und auch die Entprellung) mit Hilfe eines 
Timer-Interrupts.

Autor: Pixeltiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die schnelle Antwort, so funktioniert's. Ich dachte 
allerdings, dass die vertikalen Dioden verhindern, dass P1 und P2 auf LO 
gezogen werden, was ja offenbar nicht so ist. Da muss ich wohl doch noch 
mal das eine oder andere Elektronikbuch wälzen ;-)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm besser nen Tmerinterrupt, dann braucht man keine Dioden und das 
Entprellen fällt mit ab.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.