ich mus ein par taster entprellen ! ich würde es am liebsten hardwaremäßig machen ! softwaremäßig verliere ich, meiner meinung nach, zu viel zeit. wenn ich mich richtig erinnern kann, kann man den taster mit einem condensator entprellen ! jedoch weis ich nicht mehr wie ich den schalten muss und in welcher größe ich ihn wählen muss ! kann mir wer ein paar tipps geben ?
Du mußt einen Kondensator parallel schalten. Wie groß, weiß ich nicht genau, bei halbwegs guten Tastern müßte 1nF aber reichen.
Kondensatoren funktionieren eigentlich meistens ganz gut, für professionelle Anwendungen würd ich aber eher zu etwas sichereren Methoden greifen - Maxim hat Entprellchips (MAX6816 - MAX6818), meistens wirds aber softwareseitig gelöst: mit Timern oder ähnlichem verlierst so gut wie absolut keine Zeit - das sollte überall drin sein und kostet absolut nix zusätzlich :)
Zum Entprellen brauchst Du je Taster 2 Widerstände, 1 Kondensator, 1 Schmitt-Trigger (1/6 des 74HC14), ist also sehr aufwendig. Softwareentprellen kostet dagegen kaum Rechenzeit. Du darfst es aber nicht so machen, wie fast immer hier beschrieben, indem man völlig nutzlos in der Gegend rumwartet und Rechenzeit verschleudert. Sondern, Du machst es einfach so ganz nebenbei in einem Timerinterrupt etwa alle 5ms ... 200ms. Einen Timerinterrupt braucht man ja sowieso immer, um alle zeitabhängigen Sachen zu machen. Und da drin dann noch die Tastenentprellroutine aufzurufen kostet höchstens 0,1% der CPU-Zeit. Ein Beispiel (Assembler und C) findest Du hier: http://www.specs.de/users/danni/appl/soft/keyscan/index.htm Peter
Dann ist es natürlich praktisch wenn man keinen ollen 8051 hat sondern einen AVR - da haben die Eingänge den Schmitt-Trigger schon eingebaut :-) Ich verwende auch immer Software-Entprellung. Dabei muss es nicht grundsätzlich falsch sein das mit Delays zu machen - kommt halt immer auf die Anwendung an. Meistens habe ich aber sowieso eine globale Zählervariable die alle x Millisekunden per Timer-Int inkrementiert wird, so dass das Programm in der Hauptschleife immer weiß "wieviel Uhr es ist" und die Entprellung danach ausrichten kann.
Bei mir hats gereicht, wenn ich einen 100nF Kondensator parallelgeschaltet habe. Kommt aber auch sicherlich auf den Taster drauf an. "probieren geht über studieren" - vor allem bei der Lösung mit Schmitt-Trigger, die wäre mir nämlich auch zu aufwändig.
Gibt es eigentlich eine Methode softwaremässig bei einer Matrix-Tastatur mehrere Taster gleichzeitig abzufragen? Wenn ich einfach nur die Reihen nacheinander bestrome und dann alle Spalten gleichzeitig abfrage, kann es ja zu sogennannten Geistertasten kommen. Beispiel: 5 6 7 8 | | | | 1- a b c d 2- e f g h 3- i j k l 4- m n o p Wenn ich hier a, d und p drücke, bekomm ich folgende Ergebnisse: Reihe 1 bestromt: 5 + 8 high -> a + d gedrückt -> i.O. Reihe 2 bestromt: nichts high -> i.O. Reihe 3 bestromt: nichts high -> i.O. Reihe 4 bestromt: 5 + 8 high -> m + p gedrückt -> nicht i.O. Das passiert durch die Verbindung über p auf Spalte 8, über d auf Reihe 1 und dann über a auf Spalte 5. Wie kann ich das softwaremässig umgehen? Und nein, ich kann keine Dioden einbauen..... Gruss Andre
@Andre, in einer Matrix können ohne Dioden nur max 2 Tasten immer eindeutig erkannt werden. Deshalb werden z.B. in einer PC-Tastatur die Sondertasten "Strg", "Alt" usw. separat abgefragt. Peter
Andreas: "... ollen 8051 ..." Meine Gratulation zu diesem rein subjektivem, aber völlig unbegründetem Statement ! Ich sag Dir jetzt mal auf den Kopf zu, das Du mindestens 20 davon zu Hause rumwerkeln hast. Egal ob Waschmaschine, Fernseher, Videorekorder, HiFi-Turm, PC usw., da werkeln oft 8051-er und meistens nicht nur einer davon. In jeder PC-Tastatur steckt z.B. einer, den SMB-Bus überwacht auch einer. Wenn also Windows wieder mal abgeschmiert ist und damit Dein Pentium nicht den Hitzetot stirbt, regelt der 8051 dann den Takt runter bzw. den Lüfter hoch. Ich hab jetzt über die Feiertage meinem Nootebook ein 40GB-Platte eingeschraubt. Dann habe ich mir die alte 6GB-Platte genauer angesehen und da steckt doch tatsächlich ein 87C154 drauf, also nichts mit alt ! Da habe ich auch meine ersten 8051 her, in alten SCSI-Platten steckten sogar 2 Stück (DIL-Gehäuse + externer EPROM). Wenn Du dann noch ein modernes Auto mit CAN-Bus fährst kommen mindestens nochmal 20 dazu. Es gibt da z.B. kleine 8051-Derivate, die die Scheinwerfer steuern, davon hast Du schon mal 4, dann natürlich die Motorsteuerung, die Airbags, ... also die 20 reichen wohl garnicht. Gibs also zu, Du bist von 8051-ern umzingelt. Und daß nur, weil sehr viele andere Leute, diese überhaupt nicht "oll" finden. Und Du kaufst ja letztendlich von diesen Leuten die "ollen" Geräte mit den 8051 drin. Die 8051-er haben schon ne Menge Vorteile, z.B. gegenüber den Bitbefehlen des 8051 kann sich der AVR nur verstecken. Außerdem gibt es sehr wohl auch 8051 mit Schmitt-Trigger-Eingängen, z.B. die Philips LPC-Serie. Auch habe ich bisher keinen anderen µC gesehen, den man so extrem effizient in C programmieren kann. Im Mittel nur etwa 10% mehr Programmspeicher gegenüber Assembler, das schafft bei weitem nicht mal der AVR. Der Herr Keil ist sich natürlich bewußt, daß er einen sehr leistungsfähigen C-Compiler gebaut hat und verkauft ihn auch dementsprechend teuer. Aber über Schulversionen sollte man trotzdem damit seinem Hobby nachgehen können und die 2kB Testversion reicht schon für ne Menge, wie gesagt er optimiert ja extrem Speichersparend. Hier mal ein 2kB Beispiel: http://www.specs.de/users/danni/appl/soft/c51/thclock/index.htm Also wer sich mit dem 8051 beschäftigt, der setzt in keinster Weise aufs falsche Pferd. Und Cygnal würde ja wohl nicht seine "ollen" 8051 jetzt auf 100MIPS hochdrehen, wenn sie sich nicht absolut sicher sind, diese auch reißend verkaufen zu können. Peter
LoL @ Peter... Gut gesagt... Noch hinzuzufügen: nicht umsonst kommen immer mehr 8051 mit USB 1.1/2.0 raus, mit 10/100MBit Ethernet usw... Da kann kaum ein anderer uC (den ARM mal ausgenommen) mithalten! Rainer.
Ganz umsonst gibt es aber auch nicht zig andere Controllerfamilien... Das jeder seinen Liebling hat ist klar, trotzdem sollte man es etwas objektiver angehen. Bzw. schonmal nen Pferd mit nem Huhn verglichen?
Ach Peter, nimm doch nicht immer alles so persönlich. Hast du wirklich nicht den Smiley gesehen? Ich weiß dass der 8051 der mit Abstand am weitesten verbreitete und wahrscheinlich angesichts der vielen Derivate auch einer der vielseitigsten Controller ist, und ich weiß auch dass er den AVRs gegenüber einige Vorteile (aber auch Nachteile) hat. Tatsache ist jedoch dass die Hardwareentprellung beim AVR trivial ist, dass es irgendwo in der riesigen Auswahl der 8051er auch einen mit Schmitt-Triggern gibt will ich dabei ja gar nicht bestreiten.
Hardwareentprellung ist alles andere als trivial ! Wichtig sind auch die 2 Widerstände, ein Pull-Up (z.B. 10k) und einer in Reihe (z.B. 1k), um den Entladestromstoß des Kondensators abzufangen. Ansonsten können auch bei nur 100nF schon mal 1000A fließen, wenn auch nur sehr kurzzeitig ! Und je nachdem, welchen Pfad dieser Entladestrom nimmt, können die seltsamsten Effekte auftreten. Bei den Kontakten kann es außerdem zum Schweißeffekt kommen (höherer Verschleiß). Besonders abzuraten ist von Tantalkondensatoren direkt parallel zum Kontakt, die vertragen Kurzschlüsse überhaupt nicht. Also immer schön den Reihenwiderstand vorsehen. Als Pull-Up reicht bei kurzen Leitungen auch der im Mikrokontroller. Peter
Also zum simplen Entprellen von Tastern brauch ich doch keine Schmitt-Trigger. Sind doch soweit ich mich richtig entsinne rein digital arbeitende Bauteile. Dieser ganze "Firlefanz" mit diversen C bzw. R/C sind doch sowieso nur unnötige Krücken die zusätzliche Bauteile erfordern. Wir leben ja nicht mehr in dem Zeitalter wo 256 Byte Programmspeicher schon recht teuer sind. Also wirklich sinnvoll ist nur eine Software-Entprellung.
Hallo, um noch mal auf die 8051 ziger zu kommen, ich habe bei der externen E-Prom Variante mit Latch aufgehört. Jetzt gibts die ja mit Flash. Gibt es da auch so eine Art ISP? Was ist den für ein 8051 empfehlenswert z. B. ohne AD Wandler und wie programmiere ich den? Danke Mike
Wenn der Taster ein wechsler ist, dann lassen die sich auch ganz einfach mit einem RS-Flip-Flop entprellen. Nicht unbedingt die billigste methode aber technisch sehr sauber. @Peter nicht das ich jetzt über deine 51er lästern will aber ich denke mal das in meinem Haushalt und meinem Auto wesentlich mehr Motorolas verbaut sind. Eckhard
@Mike: Deshalb habe ich ja auch so viel mit den 8051 gemacht, die Atmel 89C51 waren ja lange Jahre die einzigen Kontroller mit Flash gewesen. EPROMs habe ich schon ewig keine angefaßt. Wenn Du was mit den 8051 machen willst, nimm nur ISP (z.B. AT89C8252) bzw. IAP (z.B. T89C51RD2). Aber auch andere Hersteller außer Atmel haben solche, z.B. Cygnal, Maxim, Analog Devices usw. Auf der Keil-Webseite findest Du etwa 32 Hersteller von 8051 angegeben, such dann einfach auf deren Webseiten nach Flashtypen mit ISP / IAP. Zum Thema: Meistens sinds ja mehrere Tasten, die man als Matrix schaltet und dann ist Hardwareentprellung eh nicht mehr möglich. Und wenn ich einmal ne Entprellroutine geschrieben habe, nehme ich sie auch dann, wenns mal nur 2 Tasten sind. Meine Devise ist, wenn ich durch Software auch nur einen Widerstand einsparen kann, dann tue ich das auch. Peter
Zur Tasterentprellung per Software habe ich etwas in die Codesammlung gelegt: für den AT90S8515. Mir ist bekannt, daß diese Routinen auf einem 8051 viel eleganter, schneller und überhaupt besser ablaufen. Michael
@Michael, wenn man etwas in C schreibt ist es genau so elegant, egal ob es auf nem 8051 oder AVR laufen soll. Wenn dann vielleicht für den AVR etwa mehr Code erzeugt wird, interessiert das kaum, dann nimmt man eben den Typ mit mehr Speicher. Dafür gibts ja die AVRs mit 128kB. Pech höchstens, wenn man schon eine Platine für nen 20-Pinner fertig hat und dem der Flash ausgeht. Und besser laufen kann nur eine Routine, die weniger logische Fehler enthält. Z.B. lassen manche unberücksichtigt, daß eine Taste auch beim Loslassen prellen kann. Peter
wo kann ich den den max 6818 erhalten? bisher hat kein lieferant (conrad, reichelt,...) im programm?
Hallo Chris, das Entprellen von Schaltern und Tastaturen hängt von deren Einsatzumgebung ab. Wenn Du einen Schalter/taster mit einem Pullupwiderstand sotfwaremäßig abfragst, dann ist der sinnvollerweise relativ hochohmig (>1K). Störsignale können nun leicht diesen Eingang beeinflussen und zu Fehlerkennung führen. Lange Kabelverbindungen erleichtern es Störern zusätzlich bei hohen Quellwiderständen. Also immer nach Bedarf eine lösung wählen. MfG Manfred Glahe
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.