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?
Apropos: Wenn dein unbekannt gebliebener µC einen Pin-Change Interrupt kennt, kann der Zirkus mit den Dioden ganz entfallen.
@ 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 ...
> Fast, so drückst du einmal die Taste und die Diode ist hin.
...bezog sich auf die Schaltung von 11:30 Uhr.
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. ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.