Forum: Mikrocontroller und Digitale Elektronik Taser gedrückt LED soll leuchten


von Markus M. (seeadler78)


Angehängte Dateien:

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

von Hannes L. (hannes)


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.

...

von Markus M. (seeadler78)


Lesenswert?

Hi
Ich habe das Problem das die LED nicht dauernt an bleiben.Der Taster
wird ja erkannt.

von Peter D. (peda)


Lesenswert?

Ich sehe, daß Du uns unnötige Arbeit aufhalsen willst.

Lösche allen auskommentierten und toten Code, probier es dann nochmal
aus und dann schaut sich das vielleicht auch mal jemand näher an.


Peter

von jon (Gast)


Lesenswert?

Ich Taser dir auch mal einen gleich!

von Hannes L. (hannes)


Angehängte Dateien:

Lesenswert?

Gut, ist nicht mit Tiny2313 (den gab's damals noch nicht), statt der
LED wird nur ein Laser geschaltet, nebenher auch noch ein einfacher
Schrittmotor. Aber ich denke mal, dass du aufgrund der Kommentare die
relevante Stelle finden wirst und es auf den Tiny2313 übertragen
kannst.

...

von norad (Gast)


Angehängte Dateien:

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

von norad (Gast)


Angehängte Dateien:

Lesenswert?

@Markus

Sorry! mir ist ein Fehler unterlaufen :((
Hier die Korrektur!

von Hannes L. (hannes)


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

...

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.