mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 4 Taster an Mega32 entprellen


Autor: Ichnur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich muss 4 Taster an meinem Mega32 entprellen. Auf meiner Platine ist 
noch Platz, das Programm würde ich nur ungern ändern.

Wie genau muss ich das anstellen? Im Internet finde ich nur Schaltpläne 
mit Schmitt-Trigger, aber das braucht man ja beim AVR nicht, richtig? 
Wie muss ich verkabeln?

MfG
Simon

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ich muss 4 Taster an meinem Mega32 entprellen. Auf meiner Platine ist
>noch Platz, das Programm würde ich nur ungern ändern.

Timerinterrupt mit 20-50ms kostet glaub ich gerade
mal 20 Zeilen Code.

Autor: Ichnur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wie genau geht das dann? (C)

Autor: Icke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Forumsuche:
Taster entprellen

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du unbedingt eine Hardwareentprellung willst, dann brauchst du 4 RS 
FF und entsprechend 4 Taster mit Umschaltkontakt.

Aber wenn man schon einen mC hat, dann kann man das auch 
softwaretechnisch lösen.

Fred

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ichnur schrieb:
> Wie genau muss ich das anstellen?

Nimm die bekannte Routine für 8 Tasten.

http://www.mikrocontroller.net/articles/Entprellun...

Ichnur schrieb:
> Im Internet finde ich nur Schaltpläne
> mit Schmitt-Trigger, aber das braucht man ja beim AVR nicht, richtig?

Völlig richtig.

Ichnur schrieb:
> Wie muss ich verkabeln?

Taste an Pin und gegen GND.
Vorzugsweise alle 4 Tasten an den gleichen Port.


Peter

Autor: Ichnur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Link! Ich versuch es jetzt per Software und wenn das nicht 
klappt, dann per Hardware. Meine Taster hängen alle an PORTD. Da sind 
aber auch noch LEDs dran. So wie ic hden Code verstehe, sollte das aber 
keine Probleme machen.

Ein paar Fragen zum Code habe ich noch.

1) Was ist
#define REPEAT_MASK     (1<<KEY1 | 1<<KEY2)       // repeat: key1, key2
#define REPEAT_START    50                        // after 500ms
#define REPEAT_NEXT     20                        // every 200ms
?

Ich verstehe nicht, wozu diese Konstanten gut sein sollen. Brauch ich 
das nur für "Doppelklicks"?

2) Warum werden nur 4 Schwingungen ("Toggles" des Schalters) beachtet 
und wo ist dies im Code zu finden?

Auf Antworten freue ich mich!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ichnur schrieb:
> Ich verstehe nicht, wozu diese Konstanten gut sein sollen. Brauch ich
> das nur für "Doppelklicks"?
Das ist keine doppelklick-funktion, sondern eine Repeat-Funktion wie 
z.B. an der PC-Tastatur: einmal drücken und warten ergibt mehrere 
nachfolgende Tastendrücke...

> 2) Warum werden nur 4 Schwingungen ("Toggles" des Schalters) beachtet
> und wo ist dies im Code zu finden?
Wie meinst du das?
Im Code sind einfach nur 8 parallele Zähler (das sind die Bytes), die 
jeweils 4 Schritte (=Timeraufrufe) weit zählen können. Solange muß das 
Tastensignal stabil bleiben, sonst wird der entsprechende Timer 
zurückgesetzt.

Autor: Ichnur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Punkt 2, habs verstanden! Ich habe einfach nahc einer 
Möglichkeit gesucht, die Grenze für maximale Schwingungen zu ändern. Ist 
aber nicht so schlimm, wenn es das nicht gibt.

Erklärung 1 habe ich jetzt auch kapiert :)

Ich hoffe nur, dass das Ganze auch problemlos funktioniert und ich nicht 
an sowas hängen bleibe. Morgen muss das Ding nämlich laufen (Nein, kein 
Schulprojekt ;))

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ichnur schrieb:
> Ich habe einfach nahc einer
> Möglichkeit gesucht, die Grenze für maximale Schwingungen zu ändern. Ist
> aber nicht so schlimm, wenn es das nicht gibt.

Ergibt sich aus der Interruptrate: 10ms * 4 = 40ms
Ist aber völlig unkritisch.
In der Regel reichen 2ms aus, kannst aber auch auf 50ms hochgehen. 
Reaktionen nach <=200ms werden vom Menschen noch als "sofort" 
wargenommen.


Peter

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.