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
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. ...
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
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. ...
@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
@Markus Sorry! mir ist ein Fehler unterlaufen :(( Hier die Korrektur!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.