morgen zusammen,
ich bräuchte mal ein wenig hilfe.
Und zwar folgendes Problem, ich habe eine 1x12 Tastatur diese möchte ich
mit einem µC verbinden, und bei jedem Tastendruck soll ein Interrupt
ausgelöst werden (programm funktioniert soweit).
Mein problem ist nur, irgendetwas stimmt mit der schaltung nicht.
Prinzip soll sein, 12 Tasten sollen an den µC gehen und ein weiterer Pin
soll als Interrupt genutzt werden und das am besten nach einem analogen
ODER Gatter, so dass egal welche der 12 tasten man drückt immer ein
Interrupt kommt.
Ich habe das ganze schonmal mit Pull Down Widerständen versucht und
jetzt auch mit Pull Up Widerstände. Mit Pull down geht es NICHT. Mit
Pull Up geht es teilweise, problem ist da der Interrupt also das
verodern der 12 tasten auf einen Pin.
Würde mich über ein bisschen hilfe freuen (oder einen schaltplan) ;)
danke
Tataturen sollte man an einem Timer auswerten, nicht an einem Interrupt.
Wie soll das Entprellen denn gehen ? Nimm einen 10ms Tick und wenn der
neue Zustand zum 2.mal anliegt ist entprellt.
Hmm, mir fällt jetzt nur das Stichwort 'prellen' ein.
Aber was genau funktioniert an deiner Schaltung denn nicht?
Und wenn du es unbedingt verodern willst, sollten die Taster nach Vcc
schalten und die Eingänge des Oder Gatters per pull down auf logisch 0
gezogfen werden.
Ich weiß zwar nicht, was ein analoges ODER Gatter ist (ich kenne nur
digitale), aber wenn Du unbedingt einen Aufweck-Interrupt bei
Tastendruck brauchst, dann solltest Du mal über Dioden nachdenken. Ich
würde den Int. aber nur zum Aufwecken nutzen, das Einlesen und
Entprellen der Taster geht durch zyklische Abfrage (Timer) bedeutend
besser.
...
Hallo,
ohne jetzt auf Entprellen, Timer, Interrupt weiter einzugehen:
Tasten gegen GND geschaltet mit PullUp an jeder Taste (oder interner
PullUp bei AVR)?
Würde ich ein wired OR mit Dioden machen. Von jeder Taste eine Diode mit
Anode am INT-Pin und Kathode an Taste. INT mit PullUp und fertig.
Gruß aus Berlin
Michael
Du schaltest alle Tastaturpins über Dioden auf den Interruptpin.
Ich vermute mal du hast an jedem Pin der zu einer Taste geht einen
Pull-Up und am Int-Pin auch. Die Pins sind dann Low-aktiv. Wenn du jetzt
von jedem Tasten-Pin eine Diode zum Int-Pin legst wird dieser mit nach
low gezogen wenn eine Taste gedrückt wird, die Tasten können sich aber
nicht gegenseitig beinflussen.
Wie rum die Diode muss kannste jetzt mal überlegen ;-)
Gruß
Fabian
erstmal vielen dank für die hilfe, also es liegt def. nicht am IRQ /
Timer etc. weil das geht schon, das habe ich getestet!
Habe jetzt nochmal ein schaltplan angehängt, vllt. verdeutlich sich es
dadurch etwas...
Jau, jetzt ist es deutlicher: Anders herum funktionieren die Dioden
besser. In deiner Variante passiert erst etwas, wenn du alle 12 Taster
gleichzeitig drückst (UND Funktion statt ODER Funktion, wobei du hier
den an GND angeschlossenen Tastern zu dank in invertierter Logik
arbeitest - De Morgan lässt grüssen).
Allerdings erschliesst sich mir nicht, was der Teil links von den Dioden
eigentlich werden sollte. Widerstand an 3,3V und Signal an Pin wäre ok,
aber so? Und was stellen diese dekorativen Fragezeichen dar?
@ andreas,
es ist ein LPC 2124
also, muss ich die dioden dann nur umdrehen? und die den linken teil
wegnehmen und dann die dann umgedrehten dioden auf einen zusammenfassen
und dann direkt zum pin?
also ich ich habe das schonmal OHNE den dioden gemacht, nur das nicht so
funktioniert...
GB wrote:
> also, muss ich die dioden dann nur umdrehen? und die den linken teil> wegnehmen und dann die dann umgedrehten dioden auf einen zusammenfassen> und dann direkt zum pin?
Ja, fast. Dieser Pin braucht dann noch einen Pullup-Widerstand.
Hallo,
naja, ohne Dioden sind ja auch alle Leitungen, die zu den 12 Pins gehen,
direkt verbunden, was also soll da noch funktionieren?
PS: Stromkreise sind doch eigentlich garnicht so schwer. Die Wege bei
gedrückten oder nicht gedrückten Taster reinzumalen, wohl auch nicht.
Die jeweiligen Spannungen abzuschätzen, die an den Pins dann auftreten
und ob die passen, ist doch eigentlich auch nicht unlösbar?
Auch an µC ist eine Spannung die Differenz zwischen 2 Punkten und Strom
fließt nur, wenn eine Spannung vorhanden ist und ein Stromkreis
geschlossen ist.
Gruß aus Berlin
Michael
erstmal vielen dank für die hilfe, nur von meinen reinen logik her,
würde ich sagen das es SO wie ich es jetzt angehängt habe logisch
richtig? oder? weil am IRQ Pin liegen ja auch 3,3 V an ...
Hallo,
zuerst zur 2. Schaltung:
Taste nicht gedrückt -> +3,3V über Widerstand an Kathode der Diode und
Anode über Widerstand an GND -> Diode ist gesperrt, INT liegt über
Widerstand an GND -> L Pegel.
Taste gedrückt -> Kathode liegt über Taste an GND, Anode wie oben, also
beide Seiten GND -> INT wie oben, passiert also nichts...
Zur 1. Schaltung:
3,3V an INT -> H Pegel, Diode 3,3V an Anode, 3,3V über Widerstand an
Kathode.
Taste gedrückt -> Kathode über Taste an GND, Anode an 3,3V -> wenn sich
die Rauchwolken verzogen haben, weil Diode oder Stromversorgung
aufgegeben haben, fällt Dir vielleicht der fehlende Widerstand zu den
3,3V auf?
Ist es wirklich so schwer? ;-)
Gruß aus Berlin
Michael
Hallo,
@ die ???: Du warst schneller, es verwirrt mich trotzdem immer, wie
jemand programmiert (setzt ja ein gewissen logisches Denken voraus, wenn
man nicht nur Copy&Paste macht) und selbiges bei Strom&Spannung dann
scheinbar völlig fehlt.
Gruß aus Berlin
Michael
Michael U. wrote:
> Du warst schneller, es verwirrt mich trotzdem immer, wie> jemand programmiert (setzt ja ein gewissen logisches Denken voraus, wenn> man nicht nur Copy&Paste macht) und selbiges bei Strom&Spannung dann> scheinbar völlig fehlt.
Anderenfalls bräuchte es dieses Forum nicht. ;^) Und aus Fehlern lernt
man (hoffentlich).
Ebenfalls Grüße aus Berlin
> Anderenfalls bräuchte es dieses Forum nicht. ;^) Und aus Fehlern lernt> man (hoffentlich).
Ich glaube kaum, dass aus diesem unsystematischen Herumgeeiere jemand
etwas lernen kann. Denn es kommt ja nicht nur darauf an, dass etwas
(nicht) funktioniert, sondern vor allem auch warum es (nicht)
funktioniert.
Und die Aussage:
> ok - danke werd es morgen mal ausprobieren, thx ;)
suggeriert mir, dass absolut nix verstanden wurde.
...