mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Störungen durch Elektrosmock


Autor: Daniel H. (doomstar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich weis nicht ob ich hier richtig bin aber es wirkt sich halt auf das 
Programm aus.

Bin gerade dabei ein Tastenfeld von Reichelt an mein Mikro 
anzuschließen. Das Tastenfeld hat 8 Pins. 4 für waagerecht und 4 für 
senkrecht. Draus ergibt sich immer eine der 16 Tasten.

Leider muss ich durch die Bauart erst 4 auf High setzten und die anderen 
4 auslesen und umgekehrt damit ich die Taste eingelesen habe.

Das Problem ist das ich durch einstreuungen Signale bekomme wo keine 
sein dürften. Leider kann ich nichts über einen Wiederstand auf Masse 
legen um einen sauberen Low Pegel zu bekommen.

Jemand nee Idee wie ich das Lösen kann?

MFG
Daniel

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhh, wie lang sind die Leitungen vom µC zur Tastatur? Eigentlich ist das 
Auslesen einer Matrixtastatur relativ störsicher. Und Deine 
Auslese-Philosophie verstehe ich auch nicht ganz. Normalerweise legt man 
vier der Pins (entweder die Spalten- oder die Zeilenanschlüsse) über als 
Ausgang geschaltete µC-Pins auf Masse (Low) und fragt die jeweils 
anderen (die an als Eingang mit Pull-Up geschaltete Pins angeschlossen 
sind) ab. Als Beispiel: Die Spalten sind auf Ausgänge (Low-Pegel) 
gelegt. Die Zeilen liegen an Eingängen mit Pull-Up. Die Zeilen werden 
jetzt abgefragt. Ist irgendeine Taste gedrückt, dann wird der 
entsprechende Zeilen-Pin auf Low gezogen. Jetzt werden (in C z.B. in 
einer for-Schleife) die Spalten der Reihe nach auf High-Pegel 
geschaltet. Sobald sich der "verdächtige" Zeilenpin ändert (von Low auf 
High) hat man die richtige Spalte gefunden.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, noch was: In den Leitungen zwischen den Spaltenanschlüssen und 
den als Ausgang geschalteten µC-Pins Strombegrenzungs-Widerstände (150 
Ohm reichen) einbauen, damit nicht gleich der µC abraucht, wenn jemand 
mehrere Tasten gleichzeitig drückt ("dicke-Finger-Syndrom").

Autor: fieser Rahul (auch Oskar genannt) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Tastenfeld von Reichelt an mein Mikro anzuschließen

Soll das Tastenfeld singen? (Singstar-Keyboard?)

Wie man eine Matrix-Tastatur (mit einem AVR) ausliest, beschreibt Atmel 
in einer Application Note (AVR240). Wie das funktioniert hat JoHnny ja 
schon beschrieben.

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OT: Kann mir mal jemand die Art.-Nr. des Tastenfeldes schreiben? Sowas 
suche ich schon länger bei Reichelt, habe aber offensichtlich nicht die 
richtigen Suchbegriffe. Danke.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tasten*felder* habe ich bei Reichelt schon lange nicht mehr gesehen. Die 
letzten hab ich beim großen C bestellt. Hab auch im aktuellen 
Papierkatalog nichts dergleichen gefunden.

Autor: fieser, klugscheissender Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hab auch im aktuellen Papierkatalog nichts dergleichen gefunden.
Dafür gibt es doch auch die Ergänzungs-CD...(oder den Business-Katalog 
;-)

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rahul:
Ich meinte natürlich (auch wenn es oben im Prinzip anders steht) den 
*Reichelt*-Papierkatalog...

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@johnny.m

> Ach ja, noch was: In den Leitungen zwischen den Spaltenanschlüssen und
> den als Ausgang geschalteten µC-Pins Strombegrenzungs-Widerstände (150
> Ohm reichen) einbauen, damit nicht gleich der µC abraucht, wenn jemand
> mehrere Tasten gleichzeitig drückt ("dicke-Finger-Syndrom").

Wieso sollte der uC abrauchen? Wenn ich die Spalten treibe (meinetwegen 
mit LOW) und die Zeilen per Pull-ups ah HIGH ziehe, dann kann der USER 
drücken was er will, es raucht rein gar nix ab. Been there, done this.

MfG
Falk

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du in einer Zeile mehrere Tasten gleichzeitig drückst und eine 
(oder mehrere) Spalten sind wegen der gerade laufenden Abfrage auf 
High-Pegel (Ausgang) und andere auf Low-Pegel, dann gibts Strom satt 
(Kurzschluss über die Zeilenleitung). Das lässt sich allerdings umgehen, 
wenn man nicht das Portregister sondern das Datenrichtungsregister 
umschaltet. Dadurch spart man sich tatsächlich die Widerstände und u.U. 
ne Menge Ärger...

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@johnny.m

> Wenn Du in einer Zeile mehrere Tasten gleichzeitig drückst und eine
> (oder mehrere) Spalten sind wegen der gerade laufenden Abfrage auf
> High-Pegel (Ausgang) und andere auf Low-Pegel, dann gibts Strom satt

Die HIGH-Pegel sind aber nur duch (schwache) Pull-ups generiert, ala 
I2C.
-> Alles im gruenen Bereich.

> (Kurzschluss über die Zeilenleitung). Das lässt sich allerdings umgehen,
> wenn man nicht das Portregister sondern das Datenrichtungsregister
> umschaltet. Dadurch spart man sich tatsächlich die Widerstände und u.U.
> ne Menge Ärger...

Eben drum. Ergo. -> Es werden keine Serienwiderstände als 
Kurzschlusschutz benötigt.

MFG
Falk

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die HIGH-Pegel sind aber nur duch (schwache) Pull-ups generiert
Sind sie in dem Fall eben nicht. Wenn ich einen Ausgangspin auf 
High-Pegel schalte (zumindest bei µCs, die Push-Pull-Ausgänge besitzen, 
also z.B. AVR), dann ist da kein schwacher Pull-Up! Bei µCs mit 
Open-Collector-Outputs (z.B. 8051er) ist das kein Problem. Man muss nur 
daran denken, wenn man einen AVR o.ä. hat, muss man das 
Daten*richtungs*register umschalten und nicht das Datenregister.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> > Die HIGH-Pegel sind aber nur duch (schwache) Pull-ups generiert

> Sind sie in dem Fall eben nicht. Wenn ich einen Ausgangspin auf

In welchem Fall? Wenn mans falsch macht?

> Daten*richtungs*register umschalten und nicht das Datenregister.

Das hat doch keiner bestritten.

MFG
Falk

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das hat doch keiner bestritten.
Nö, aber bei µCs mit OC-Input kann man es eben auch gefahrlos mit dem 
Datenregister machen, bei Push-Pull aber nicht. Deshalb der Hinweis. 
Gibt vll. auch Leute, die bisher mit 8051ern gearbeitet haben (und die 
Umschaltung mit dem Portregister gemacht haben) und auf z.B. AVR 
umsteigen. Und genau die wundern sich dann...

Autor: fieser, klugscheissender Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>dann ist da kein schwacher Pull-Up!

Doch. Wenn man das DDR und das Port-Register umschaltet, hat man auf der 
einen Seite die hochohmigen Pullups und auf der anderen Seite Masse, 
sofern ein Taster betätigt wurde.
Die Atmel-Application-note beschreibt das ganz wurderbar.

>Been there, done this.
Me, too...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn man das DDR und das Port-Register umschaltet
Eben genau darum ging es doch! Bei µCs mit OC-Output muss man nämlich 
nur das Portregister umschalten und braucht sich um das 
Datenrichtungsregister gar nicht zu kümmern, was eben bei µCs mit 
Push-Pull-Ausgängen u.U. fatal wäre. Und wer zum Teufel liest schon 
Appnotes;-?

Autor: fieser, klugscheissender Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und wer zum Teufel liest schon Appnotes;-?

Ich! (Zumindest die...)


>Bei µCs mit OC-Output muss man nämlich nur das Portregister umschalten >und 
braucht sich um das Datenrichtungsregister gar nicht zu kümmern, was >eben bei µCs 
mit Push-Pull-Ausgängen u.U. fatal wäre.

In einem anderen Thread schrieb jemand:
"Man sollte wissen, was man tut"

Das gilt wohl auch in diesem Fall...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das gilt wohl auch in diesem Fall...
Das gilt eigentlich immer, oder nicht;-?

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal noch gaaanz was anderes:
Das heißt SMOG (Wortkreuzung Smoke + Fog), natürlich gibt's auch noch 
den Schmock, das is aber wieder ne ganz andere Baustelle ;-)

Autor: Daniel H. (doomstar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Dennis

Danke für die Berichtigung. :)

@johnny

Ist ein Atmega 8 und die leitung ist ca. 20cm lang.

Werde das mal so probieren wie du es geschrieben hast. Was mich schon 
wundert ist das auf den Eingängen ohne Pull up immer so um die 0,5V 
liegen je nachdem wie die Kabel liegen.

Also ich geh jetzt mal sofort testen und danke für die Antworten.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ...die leitung ist ca. 20cm lang.
Das ist natürlich schon ne Menge...

> ...probieren wie du es geschrieben hast...
OK, aber beim AVR eben dran denken, das DDRx umzuschalten bei der 
Abfrage der Spalten (Also von Ausgang auf Eingang) und nicht das 
PORTx. Nicht, dass die obige Diskussion Dich jetzt völlig 
durcheinandergebracht hat.

Die von Rahul erwähnte Appnote hab ich mir zwar noch nicht en détail 
angesehen, aber sich sowas anzuschauen ist in dem Zusammenhang sicher 
auch nicht verkehrt (steht allerdings glaub ich auch ne Menge drin, was 
Du momentan wahrscheinlich nicht brauchst).

Autor: Daniel H. (doomstar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@johnny

Ok so klappt es. Muss halt gucken das ich die störungen so weg bekomme. 
Klappt auch sehr gut.

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.