Warum Software-Entprellung besser?

Gast #3241708
Lesenswert?

Hallo liebe Gemeinde,

kann mir jemand erklären, warum die Hardware-Entprellung (quasi mit dem 
Kondensator zu glätten) für einen Taster an dem uC keine gute 
Alternative ist? Irgendwie habe ich was über einen kurzzeitigen enormen 
leistungsverbrauch, Spannungszusammenbruch gehört, dass der uC sich 
reseten kann. Wie genau ist das gemeint?

Ich finde sonst Software-Entprellung viel aufwendiger 
(Interrupt-Routinen schreiben usw) als nur einfach einen Kondi zwischen 
Taster und GND zu stecken=)

Ich bitte um eine Aufklärung ;) Danke
#3241727
Lesenswert?

@Manja (Gast)

>kann mir jemand erklären, warum die Hardware-Entprellung (quasi mit dem
>Kondensator zu glätten) für einen Taster an dem uC keine gute
>Alternative ist?

sie ist schon gut, aber einige Leute sehen es als Kostentreiber für ein 
paar Cent für R und C an ;-)

>Irgendwie habe ich was über einen kurzzeitigen enormen
>leistungsverbrauch, Spannungszusammenbruch gehört, dass der uC sich
>reseten kann. Wie genau ist das gemeint?

Da hst du was falsch verstanden. Wenn man Entprellung in Hardware 
RICHTIG macht, passiert da gar nichts. Bei einem nicht häher genannten 
Evaluationboard einer nicht näher genannten Elektronikverwertungsfirma 
mit P gab es einen Bug, der den Controller abstürzen lies. Das ist aber 
nicht der Normalfall.

>Ich finde sonst Software-Entprellung viel aufwendiger
>(Interrupt-Routinen schreiben usw)

Das macht man EINMAL und dann is gut, in neuen Projekten kopiert man es 
einfach.

> als nur einfach einen Kondi zwischen
>Taster und GND zu stecken=)

DAS ist KEINE solide Entprellung, da fehlt ein Widerstand. Wie man 
es richtig macht, siehe Artikel Entprellung
Gast #3241770
Lesenswert?

Ok, danke. Das mit den Kosten ist echt bisschen lächerlich.. OK, vllt 
wenn man 100 Taster hat, dann ja=)

Und natürlich ist der Widerstand bei mir dran=)

Aber macht die Software-Lösung nicht den uC (vllt minimal) langsamer?
Gast #3241781
Lesenswert?

Deine SW Entprellroutine schreibst du einmal und verwendest sie immer 
wieder.

Zu den Kosten:
Klar fallen Centbeträge für einen Bastler nicht ins Gewicht, aber wenn 
eine Firma eine Stückzahl von 500000 Boards oder mehr (wir sprechen hier 
nicht von 100, denn auch das ist lächerlich) hat, ist das sehr wohl 
relevant.
(Firma: TravelRec.) Persönliche Seite #3241803
Lesenswert?

Die Hardware-Entprellung hat den gravierenden Nachteil, dass die 
Zeikonstante durch R und C vorgegeben sind. Wählt man sie zu lang, hat 
der Anwender das Problem, dass Tastendrücke verloren gehen, weil die 
Schaltung gegenüber dem Anwender einfach zu lahm ist. Wählt man die 
Konstante zu kurz, können gerade bei gealterten Tasten wieder Preller 
durchkommen. Eine gut geschriebene Routine kann sowohl schnell sein, als 
auch anständig filtern, so dass jeder Tastendruck ein Erfolg wird. 
Früher oder später kehrt man der Hardwarevariante den Rücken zu.
#3241807
Lesenswert?

Ganz speziell die PeDa Entprellung hat dann noch ein paar Zuckerl, auf 
Grund derer der Gedanke nach einer Hardware Entprellung noch nie 
aufgekommen ist. Denn mit der Hardware-Entprellungt kriege ich eben 
nicht zb einen Autorepeat oder eine Unterscheidung zwischen kurzen und 
langen Tastendrücken frei Haus geliefert.

Gut, kurz/lang verwende ich nie. Aber das Autorepeat ist schon Klasse, 
zb bei Up/Down Zahleneingaben. Auf Up-Taster drücken und die Zahl wird 
um 1 größer. Bleib ich drauf, dann setzt nach kurzer Zeit der Autoreapat 
ein und die Zahl wird im (konfigurierbar) 1/10 Sekunden Takt um 1 größer 
(oder auch um 10, je nachdem was ich programmiere und welchen Bereich 
ich abdecken muss). Und das ganze mit einem simplen
1
...
2

3
  while( 1 ) {
4

5
    if( get_keypress( 1 << KEY_UP ) )
6
      value++;
7

8
    if( get_keyrepeat( 1 << KEY_UP ) )
9
      value += 10;
10

11
    if( get_keypress( 1 << KEY_DOWN ) )
12
      value--;
13

14
    if( get_keyrepeat( 1 << KEY_DOWN ) )
15
      value -= 10;
16

17
    ...

mach das mal mit Hardware-Entprellung so angenehm in der Programmierung 
UND in der Benutzerbedienung :-)
#3241821
Lesenswert?

Manja schrieb:

> Aber macht die Software-Lösung nicht den uC (vllt minimal) langsamer?

Es zeigt sich, dass praktisch jedes ernstzunehmende Programm sowieso 
intern sowas wie einen Basistakt in Form von ISR-Aufrufen alle paar 
Millisekunden hat bzw. braucht. Du paar zusätzlichen Anweisungen da 
drinnen, die die Entprellung von maximal 8 Tastern gleichzeitig 
erledigen, fallen allesamt unter 'ferner liefen'.
Gast #3241824
Lesenswert?

Es gibt auch noch einen Zwitter, der die Hardwareentprellung mit 
Software unterstüzt. Entgegen der reinen Softwareentprellung, eledigt 
ein RC-Glied die schnelle Filterung und die Software sorgt für 
definierte Pegel am Eingang. Aber lies selber, wie dies die Gemüter 
erregt:
Beitrag "EIN-AUS mit Taster per Interrupt, ATtiny25 o.ä."

Wenn Du mehrere Taster und/oder Schalter entprellen mußt, ist auf jeden 
Fall die Lösung per Software sinnvoll. Vielleicht hilft Dir dies weiter.
Beitrag "Entprellung von Tastern"
Gast #3241960
Lesenswert?

Falk Brunner schrieb:
> Last but not least braucht jedes abtastende System eine analoge
> Bandbegrenzung am Eingang.

Einen Vorfilter für jede Taste? Das ist barer Unsinn. Es geht ja nicht 
um einen Sinuseingang, sondern um das Erkennen stabiler 0 oder 1 
Zustände. Völlig abwegiges Theorieverständnis.

Die Softwareentprellung funktioniert seit rund 40 Jahren problemlos, da 
sollte sie doch allmählich verstanden sein. Die benötigte Rechenzeit war 
damals schon unerheblich. Das einzige was eine Taste braucht ist ein 
Überspannungsschutz, wenn sie entsprechend exponiert ist.

Gruss Reinhard

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