Forum: Mikrocontroller und Digitale Elektronik ODER Interrupt


von GB (Gast)


Lesenswert?

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

von 6644 (Gast)


Lesenswert?

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.

von ozo (Gast)


Lesenswert?

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.

von Hannes L. (hannes)


Lesenswert?

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.

...

von Michael U. (amiga)


Lesenswert?

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

von Fabian B. (fabs)


Lesenswert?

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

von GB (Gast)


Angehängte Dateien:

Lesenswert?

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...

von Andreas K. (a-k)


Lesenswert?

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?

von Andreas K. (a-k)


Lesenswert?

Apropos: Wenn dein unbekannt gebliebener µC einen Pin-Change Interrupt 
kennt, kann der Zirkus mit den Dioden ganz entfallen.

von GB (Gast)


Lesenswert?

@ 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...

von Andreas K. (a-k)


Lesenswert?

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.

von Michael U. (amiga)


Lesenswert?

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

von GB (Gast)


Angehängte Dateien:

Lesenswert?

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 ...

von GB (Gast)


Angehängte Dateien:

Lesenswert?

@ andreas,

oder meinst du das so?!

von die ??? (Gast)


Angehängte Dateien:

Lesenswert?

Fast, so drückst du einmal die Taste und die Diode ist hin. 
Vorwiderstand!

von die ??? (Gast)


Lesenswert?

> Fast, so drückst du einmal die Taste und die Diode ist hin.

...bezog sich auf die Schaltung von 11:30 Uhr.

von Michael U. (amiga)


Lesenswert?

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

von Michael U. (amiga)


Lesenswert?

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

von die ??? (Gast)


Lesenswert?

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

von GB (Gast)


Lesenswert?

ok - danke werd es morgen mal ausprobieren, thx ;)

von Hannes L. (hannes)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.