Forum: Mikrocontroller und Digitale Elektronik Störungen bei 4*4 Tastatur


von Buchmann (Gast)


Lesenswert?

Ich habe einen mega128, und eine Tastenfeld mit 4*4 in verwendung.
Das Tastenfeld wird über 8pins an eine kleine Transistorschaltung, und
diese dann an den uC angeschlossen. Bei Versuchen, wo nur die Schlatung
und die Tastatur an den uC gehaengt waren, hat das ganze super
funktioniert. Doch nun habe ich eine komplette Platine entwickelt, und
die Tastatur funktioniert so gut wie überhaupt nicht mehr. Die externen
Interrupts werden zwar ausgelöst, jedoch liegt am Port, der die Tasten
einliest fast immer in falsches Ergebnis an.
was kann hier der Fehler sein? Mit softwaremäßiger Tastenentprellung
war nichts zu machen.

von michi (Gast)


Lesenswert?

Hi,
Sind die Singal-Pegel der Tasten ausreichtent dimensioniert?
mfg

von crazy horse (Gast)


Lesenswert?

Und ansonsten kann man zu deinem Problem nichts sagen. Ohne Hard- und
Software zu kennen, kann man allenfalls raten.

von Peter D. (peda)


Lesenswert?

Also diese ominöse Transistorschaltung und Dein Programm kennt ja
keiner, wie soll da jemand helfen ???

Ich nehme immer die Standardschaltung, d.h. die Matrix direkt an
Portpins, die internen Pull-Ups aktiviert und dann im Timerinterrupt
abgetastet und entprellt, funktioniert astrein.

Ist hier doch alles schon 1000-mal durchgekaut worden und in der
Codesammlung gibts gute Beispiele dafür.


Peter

von Rainer (Gast)


Lesenswert?

Hi,

bastle auch gerade an einem Tastaturprogramm rum.
Hab wie Peter geschrieben hat ebenfalls die Taster direkt
an die Port Pins gehängt und Pull-Ups hinzugefügt. (3x4 Matrix)

Jetzt bin ich am grübel, wie ich diese Routine am elegantesten
Programmiere.

Zum Entprellen reicht es doch, wenn ich nach einem Tastendruck eine
kleine Wartezeit einfüge, oder?

Nur bin ich mir noch nicht im klaren, in welchem Zeitraster ich die
Tastatur abfragen soll. Jeder Schleifendurchgeng, ...?
Ihr habt was von Timerinterrupt geschrieben; ist dazu ein Interrupt
nötig?

Wäre da für ein erprobtes Chema dankbar. Hab in der Codesammlung
allerdings nichts so passendes gefunden.

Rainer

von Peter D. (peda)


Lesenswert?

Hier ein Beispiel für eine 3*8 Matrix:

http://www.mikrocontroller.net/forum/read-4-20511.html


Peter

von Buchmann (Gast)


Lesenswert?

Danke fuer eure Hinweise - das mit dem Entprellen hab ich jetz.. dabei
ist das Ganze aber etwas seltsam - ich muss, nach dem der externe
Interrupt ausgelöst wurde, ca 3ms warten, bevor ich den PORT einlesen
kann, vorher schwanken die Signalpegel herum - hab aber keine Ahnung
wieso.

von Peter D. (peda)


Lesenswert?

"...hab aber keine Ahnung wieso."

???

Da erkläre bitte mal, was Du unter (Ent-)Prellen verstehst.


Peter

von Buchmann (Gast)


Lesenswert?

das is dann wohl "software" - mäßiges entprellen oder? ich hab ja ne
fertige platine.. und ich weiß echt nicht, warum die Signalpegel 1ms
nach dem Tastendtuck noch schwanken.
ich will jetz nichts mehr an der platine herumlöten - kann es vieleicht
sein das die Signalleitungen zu lang sind? ca 20cm

von Tobi (Gast)


Lesenswert?

weil das schwanken vielliehct genau das besagte prellen (auf- und
zuschwingen) des schalters ist? das warten iste ien lösung ganz sicher
aber nicht die beste. verwend mal die suche im forum mit stichworten
ala debounce oder entprellen

von Buchmann (Gast)


Lesenswert?

hm.. ich dachte das entprellen ist ausschalten des interrupts nach
dessen auftreten?

von Tobi (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.