Taser gedrückt LED soll leuchten

OP #350751
Lesenswert?

Hallo
ich habe folgendes Problem.Wenn ich den Taster drücke soll die Led
dauerhaft brennen.Den Tastendruck erkennt der Controller.Die LED
leuchtet solange ich den Taster drücke , lasse ich ihn los geht die LED
aus.Ach so der Rest des Programmes ist erst mal egal.
Kann mir jemand sagen warum das so ist
Danke
Angehängte Dateien:
#350752
Lesenswert?

Schau dir mal das Konzept der Tastenentprellung im Timer-Interrupt eines
ständig laufenden Timers an (Urheber Peter Dannegger), damit ist das
Reagieren auf bis zu 8 Tasten gleichzeitig ein Kinderspiel.

Links auf Code und Erklärungen dazu findest du, wenn du im Wiki
(Artikelsammlung) nach dem Begriff "entprellung" suchst.

...
Gast #350757
Lesenswert?

@markus

Was Du willst ist sowas wie ein Stromstoßschalter oder auch
Toggel-FlipFlop.


Ich hab hier mal ein Ablauf Diagramm Skizziert, schlagt mich dafür aber
nicht ;)
Allerdings gilt es 8051 derivate da ich mich bei den AVR's nicht
auskenne bzw. ob es da Bitadressierbare Bereiche gibt.

Das Diagramm ist etwas grob  desshalb erklär ich's nochmal .

Im Prinzip wird beim drücken einer Taste entsprechend ein Ausgang
Invertiert und ein Merker gesetzt.
Nachdem die Taste losgelassen wurde wird der Merker wieder gelöscht.
Betätigt man den Taster wieder beginnt das Spielchen von vorne und der
Ausgang wird abermals invertiert usw.

Also alles hängt hier am Merker.

Ich hoffe es hilft dir weiter
Angehängte Dateien:
#350759
Lesenswert?

Man kann es aber auch kompliziert machen...

Da du ja mit dem Tiny2313 arbeitest, kannst du ja auch seine Features
nutzen.

Setze einfach das entsprechende Bit im PINx-Register, und schon ist der
zugehörige Port getoggelt, also invertiert. Siehe auch Seite 47 ganz
oben im Datenblatt des Tiny2313.

Ansonsten erreichst du das T-Flipflop ganz einfach durch eine
EXOR-Verknüpfung des eingelesenen Ports mit einem Register, in dem das
Bit  die Bits gesetzt ist  sind, das / die getoggelt werden
soll(en).

Also:
- zu toggelnde Bits in Hilfsregister2 setzen
- Port in Hilfsregister1 einlesen
- Hilfsregister1 mit Hilfsregister2 EXOR-verknüpfen
- Hilfsregister1 an Port ausgeben

...

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