4 Taster an Mega32 entprellen

Gast #2076739
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
Gast #2076744
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.
Gast #2076767
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
#2076843
Lesenswert?

Ichnur schrieb:
> Wie genau muss ich das anstellen?

Nimm die bekannte Routine für 8 Tasten.

http://www.mikrocontroller.net/articles/Entprellung#Komfortroutine_.28C_f.C3.BCr_AVR.29

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
Gast #2077423
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
1
#define REPEAT_MASK     (1<<KEY1 | 1<<KEY2)       // repeat: key1, key2
2
#define REPEAT_START    50                        // after 500ms
3
#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!
Moderator (Firma: Titel) Persönliche Seite #2077431
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.
Gast #2077489
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 ;))
#2077627
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren