Datum: 29.12.2002 16:24
Das Programm avr_tast.c zeigt, wie einzelne Taster/Schalter entprellt und dekodiert werden können. Beispielhaft wird hier ein AT90S8515 verwendet. Die Taster werden an PortA gegen 0V geschaltet. Zur Kontrolle werden LEDs an PortC ein/ausgeschaltet, ebenfalls aktiv-low. Die Entprellzeit der Taster sowie wiederholte Dekodierung (repeat-Funktion) können weitgehend verändert werden. Viel Spaß ! Michael
Datum: 29.12.2002 16:25
Für die Hexen/Hexer, die nicht warten können, die passende Datei.
Datum: 15.01.2003 06:18
Sorry, aber gibts das Programm auch in ASM?
Datum: 15.01.2003 11:59
Nun gut, anbei die vom Compiler erzeugte .s90-Quelle. Abweichend zur .c-Quelle sind die static-Variablen global deklariert und nicht explizit initialisiert; das ist etwas übersichtlicher. Die C-Anweisungen sind als Kommentar eingefügt. Bei timer0_int werden die Register über -Y bzw. Y+ auf einem separaten Stack abgewickelt. Hier kann alternativ push/pop verwendet werden.
Datum: 25.02.2003 13:50
Anbei nun eine ähnliche Lösung für den 8051. Der Hauptunterschied ist, daß die Tasten parallel und voneinander unabhängig ausgewertet werden. Somit ist z.B. die Realisierung einer Shift-Taste möglich. Werden nun 2 Tasten mit Repeat-Funktion gedrückt, dann werden auch beide wiederholt. Ein Unterschied ist noch, daß die Größe nur 13% beträgt (123 statt 914 Byte). Es hat mich doch einige Mühe gekostet, durch Dein Programm durchzusteigen. Ich finde es einfacher zu überblicken, wenn Routinen möglichst linear sind, d.h. nur einmal am Ende verlassen werden. In Deiner Routine sind aber doch etliche "return;" zwischendrin versteckt. Peter
Datum: 25.02.2003 17:27
Für Leute, die noch eine schöne .A51-Routine brauchen, die entsprechende Quelle 'taster.a51'. Per T0-Interrupt wird die Routine GET_TASTER aufgerufen. Hier werden 16 Taster (beispielhaft an Port1+Port2) mit TAST_IN eingelesen, entprellt und ggf. mit Routine DECODE ausgewertet; dies zeigt, daß Entprellung und Dekodierung verschiedene Schritte sind. Für Matrixtastaturen muß TAST_IN angepaßt werden - für eine andere Dekodierung DECODE. Die hier verwendete Dekodierung bietet 'n-key rollover', wie man es von alphanum. Tastaturen erwartet. Werden statische Taster benötigt, dürfte es nicht schwerfallen, diese entsprechend auszumaskieren. Die vorliegende Routine ist eine abgemagerte Version einer älteren Anwendung; ggf. sind Anpassungen/Änderungen erforderlich.
Datum: 06.03.2003 08:12
Der vollständigkeit halber hier noch eine Schaltung zur Hardwareentprellung, am Beispiel eines Digitalpotis.
Datum: 06.03.2004 16:58
Ich habe mir mal vor einiger Zeit Gedanken über entprellen von Tastern gemacht. Diese Schaltung funktioniert auf jeden Fall, mit jedem Schalter, auch mit den ganz schlimmen. man müsste gegebenenfalls die Werte von Widerstand und Kondensator ändern.
Datum: 06.03.2004 17:19
"Diese Schaltung funktioniert auf jeden Fall" Nein, 10k * 100n sind ja nur 1ms, das kann zu wenig sein. Aber wie schon gesagt, warum Hardware nehmen, die mich jedesmal was kostet, anstatt ein paar Codezeilen, die mich nichts kosten. Peter
Datum: 06.03.2004 21:02
wie gesagt, man müsste die Werte abändern, wenn man schlechte Schalter hat, aber mit normalen Tastern funktionierts. 1ms reicht übrigens auch für relativ schlechte Schalter, denn 1ms ist nicht die Zeit vom 1. bis zum letzten Prellimpuls (was durchaus mehrere hundert sein können). Dann würde es auf keinen Fall funktionieren. Da ich aber ein Schmitt Trigger genommen habe reicht es, denn man muss hier nur die Zeit zwischen 2 Impulsen abdecken. Es gibt auch andere Lösungen mit FlipFlops usw., die Haben dann eine Zeitkonstante im Bereich von ca. 100ms, doch das war mir zu langsam. Leute mit ultranervösen Fingern könnten diesen Grenze erreichen, was nicht so got währe. Diese Schaltung war übrigens auch nict dafür gedacht mit nem MC zusammenzuarbeiten, sondern mit PLD's und Logik IC's. Und da wirds mit dem Softwareseitigen entprellen etwas komplex.
Datum: 21.07.2005 20:06
Vielen Dank!! Das hat mir sehr weiter geholfen.
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel

