Forum: Mikrocontroller und Digitale Elektronik Flankenauswertung


von pierre (Gast)


Lesenswert?

Hallo Leute
wie programmiert ihr eine pos. Flankenauswertung eines  Eingangspins bei 
den Atmelcontrollern in Assembler?

gruß Pierre

von UBoot-Stocki (Gast)


Lesenswert?

Hi,

was willst Du denn auswerten, an der Flanke ? Beschreib das Problem 
bitte mal näher...

Gruß

UBoot-Stocki

von pierre (Gast)


Lesenswert?

hi
also ich wollte ein register inkrementieren wenn die taste gedrückt 
wird. aber nur einmal inkrementieren pro tastendruck.
danke

von UBoot-Stocki (Gast)


Lesenswert?

Hi,

geht es Dir darum, eine Taste zu entprellen ?

Gruß

UBoot-Stocki

von pierre (Gast)


Angehängte Dateien:

Lesenswert?

nein, ich wollte bei ersten druck auf die taste, das eine led oder auch 
ein bit gesetzt wird und bei zweiten mal drücken auf die gleiche taste, 
die led wieder aus geht.
ich hab hier auch schon mal etwas versucht. im avr-studio läuft es gut, 
aber im controller selbst, kommt das programm, oder wer auch immer, 
durcheinander.
die datei habe ich angefügt.

(ich hab schon entrellte taster)

gruß pierre

von Florian S. (Gast)


Lesenswert?

Also bin ja PIC-Freak, darum ASM mal anderst.

1. Lade Variable "x" invertiert!
2. Und-Verknüpfen mit "Taste"
3. Ergebnis ist positive Flanke!
4. Lade "Taste"
5. Speichere in Variable "x"

Die Flanke ist dann beim drücken der Taste genau 1 Zyklus da.

Falls mit SPS besser verstanden wird!:
U  E 0.0
UN M 0.1
=  M 0.0 <-- Flanke
U  E 0.0
=  M 0.1

Gruß Flo

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo Pierre,

hast du die Taste so wie hier im Tutorial beschrieben angeschlossen? 
Dann wird das entsprechende Bit im Input-Register 0 wenn die Taste 
gedrückt ist, 1 wenn die Taste nicht gedrückt ist.
Außerdem "prellt" eine mechanische Taste, d.h. es werden bei einem 
Tastendruck mehrere Impulse erzeugt. Damit ein Tastendruck trotzdem 
richtig erkannt wird, musst du z.B. sobald das Bit 0 wird erstmal 20ms 
warten.

Gruß
Andreas

von Günter König (Gast)


Lesenswert?

Hi Pierre,

mal zur Info, es gibt keine echten entprellten Taster. Sie alle Prellen 
mehr oder eben weniger. Umgehen kann man das Problem dadurch, das über 
einen Widerstand ein Kondensator aufgeladen wird und parallel dazu ein 
Taster liegt. Beim Tastendruck wird der Kondensator schlagartig entladen 
und der Spannungssprung nach Low wird ausgewertet.
Aber du wolltest ja den Sprung nach High auswerten. Dann kannst du den 
Spannungssprung differenzieren, das heisst du lädst über den Taster 
einen Kondensator auf und wertest die entsehende kurze positive Flanke 
aus.

Mit der Grösse des Kondensators musst du etwas experimentieren, da der 
Wert von der Prellzeit des Tasters abhängt. Und du musst dafür sorgen, 
das der Kondensator auch schnell genug wieder entladen ( Auswertung 
Low-Flanke ) bzw. geladen wird ( Auswertung High-Flanke ).

Ansonsten mache es wie Andreas es beschrieben hat.

Gruß,
Günter

von pierre (Gast)


Lesenswert?

Hallo Andreas
also müsste ich erstmal alle taster abfragen ob einer gedrückt ist, und 
diese dann mit nem timerinterrupt auswerten?
oder wie "entprellst" du deine eingänge, wenn du mehrere mechanische 
schalter in deinem system verwendest wenn man von der kondensatormethode 
von Günter (danke)absieht?

gruß pierre

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich frage die Taster einfach in einer Schleife ab, wenn erkannt wurde 
dass einer gedrückt wurde mach ich 20ms Pause (bis sich der Taster 
beruhigt hat), dann geht es weiter.

von Paul P. (cpn)


Lesenswert?

Hallo Leute,
habe ein ähnliches Problem bei nem Programm in C.
Ich lasse durch eine Variable(erhöhen und niedriger Zählen) durch 2 
Taster verschiedene Lieder auf nem display anzeigen.
nun habe ich auch nach dem abfragen der Taster 300ms wartezeit, da sonst 
zu schnell zählt bei nur einer betätigung.
Und wenn man länger auf dem Taster bleibt, zählt er schneller, nur das 
Zeigt mein display nicht an da ich ja clearline mache.(dh. inhalt 
display löschen, und neuen Liedtitel anzeigen./ Melodiegenerator habe 
ich geschrieben den thread)

Meine Frage: gibt es einen Befehl/Code für nur eine pos. Flanke des 
Tasters?
Oder mache ich einfach ne längere wartezeit nach dem liedaufschreiben?
hmm....

THX Gruß Paul P.

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.