Forum: Mikrocontroller und Digitale Elektronik Externer Interrupt entprellen?!


von Tobias Vaupel (Gast)


Lesenswert?

Hallo zusammen,

ich hab folgendes vor. An dem externen Interrupt INT0 von meinem 8051 
ist ein Taster dran. Jedesmal wenn ich diesen betätige, soll eine 
Variable hochzählen.
Soweit kein Problem...
Interruptroutine geschrieben und getestet.
Dabei ist mir aber aufgefallen dass der Taster prellt...und daher zählt 
das Programm manchmal auch die Variable um 2 oder 3 hoch.
Aber die Variable soll wirklich nur EINMAL hochzählen, wenn ich den 
Taster betätige.

Allerdings weis ich nicht wie ich den externen Interrupt entprellen soll 
per software. ODer muss ich denn per hardware(RS FF oder so) entprellen?


Danke, Tobias

von Jochen (Gast)


Lesenswert?

Hallo
du kannst es software mäßig machen wenn mann denn Taster nicht so oft 
hintereinander betätigt. Dann kannst du's so machen das max einaml pro 
Sekunde um eins hoch gezählt wird.
oder nur jede 0,5s da musst halt schauen
Verstanden was gemeint ist

von Stifflers Mom (Gast)


Lesenswert?

Moin!

Du schaltest deinen Interrupt aus lässt einen Timer anlaufen und wenn 
der einen Overflow auslöst schaltest du den externen Interrupt wieder 
ein. Evtl musst du noch eine Variable mitlaufen lassen, wenn dir die 
Zeit bis zum Overflow zu kurz ist.
Das ist glaub ich das Einfachste, verbraucht allerdings einen Timer.
Eine Erweiterung währe, da man ja meistens so und so einen Timer mit 
fester Overflow-Zeit braucht (z.B. 1ms) das man die Entprellung da 
einbaut.
Noch was anderes: Ich hab z.B. einen Taster mit Schließer und Öffner, 
die beide einen Interrupt auslösen. Die Interrupts schalten sich dann 
selbst aus und den anderen ein. So funktioniert das Sehr gut, wenn man 
die Interrupts frei hat und die entsprechenden Taster.

MfG

von Tobias Vaupel (Gast)


Lesenswert?

Danke für eure Anregungen.
Aber ich hab es doch nicht mit dem Interrupt gemacht.
Gab noch ne andere Lösung :)

Trotzdem Danke!

Tobias

von anfänger (Gast)


Lesenswert?

Wie sähe denn hier die Hardware-Lösung aus? Hab die Suchfunktion
benutzt, aber kein eindeutiges Ergebnis gefunden. Also, wenn ich den
internen Pull-up aktiviert hab, muss ich dann einfach nur vom portpin
aus einen 100nF-Keramik-C nach GND legen, und das wars schon??? Hab
auch irgendwo gelesen, dass man noch irgendwie einen Widerstand mit
einbauen sollte. Wo genau muss der denn dann hin, und wie groß soll der
sein?

würd mich über ne antwort freuen. mfg, anfänger.

von leo9 (Gast)


Lesenswert?

pull-up und R sind schon richtig.
      5V
       ^
       |
       -
      | | 4k7
      | |
       -
       |    _ 10..100 Ohm
 uP <--*---|___|---
       |           |
       |            /
      ===          /
       |           |
       |           |
       - 0V        - 0V

die 4k7 können auch der interne Pull Up sein, der Serienwiderstand
begrenzt den Kurzschlußstrom beim Tasten.

grüsse leo9

von anfänger (Gast)


Lesenswert?

cool, das ging schnell. vielen dank!

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
Noch kein Account? Hier anmelden.