n'abend zusammen! Habe hier gerade ein für mich unlößbares Problem. In einer Routine wird je nach Tastenabfrage eine Variable inkremen- bzw. deprementiert. Gleichzeitig soll das jedoch auf einem 7-Segment Display angezeigt werden, welches über ein Schieberegister angeschlossen ist. Die Tasten sollten dabei entprellt werden. Welche Möglichkeit gibt es denn sowas am elegantesten zu realisieren (wenn möglich in C, weil ich mich mir asm noch nicht so sehr auskenne)
Aeh, hast du mal die Suchfunktion mit dem Ausdruck 'entprellen' ausprobiert. Allein zu dem Thema kommen ZIG Threads. Zum Thema 7-Segment per Schieberegister : poste mal dir Schaltung. Ach ja, eins noch : welchen C-Compiler nutzt du ?
Naja, die Schaltung existiert leider erstmal nur auf einem Steckbrett. Das wichtigste habe ich eben in eagle zusammengebaut. Ich will hoffen, dass hilft. Wie das entprellen funktioniert ist schon klar. Das Ansteuern der 7-Segment Anzeige ist auch klar. Beides funktioniert auch schon. Das Problem das sich ergibt ist nur folgendes: Entprellung funktioniert ja mittels delay. In der Zeit wird bei mir leider nix auf der Anzeige dargestellt :( Als Compiler benutze ich WinAVR
Peter Daneggers Entprell-Routine funktioniert ohne Delays um benutzt den Timer-Interrupt. Das gleiche kann fuer deine Display-Routine gelten. Dein Hauptprogramm laeuft in ner loop un wartet auf Ergebnisse der Entprell-Routine. Dies modifiziert dann den Display-String, den du in einer globalen Variable der interrupt getriebenen Display-Routine zur Verfuegung stellst.
"In der Zeit wird bei mir leider nix auf der Anzeige dargestellt" Warum denn nicht ? Die Multiplexanzeige erfolgt doch im Timerinterrupt, was wärend dessen im main passiert, ist egal. Und das Entprellen und Flanken erkennen macht man dann bequemer Weise auch gleich im Timerinterrupt. In der Codesammlung sind Beispiele für beides. Peter
okey, danke! Bisher läuft alles sequentiell (naja, Anfänger halt). Ich werde mir die Beipsiele die ich gefunden habe mal genauer ansehen. Teilweise sind die für Anfänger ja nicht so ganz leicht nachzuvollziehen (vorallem deine Tastenentprellroutine Peter) ;) Besten Dank für die Hilfe. Ich werde mir die Sachen dann mal angucken und mein Programm wohl oder übel umstricken müssen. Besten Dank!
Ich klemme die Taster immer über Dioden an die Leitungen, die deine Transistoren ansteuern. Die "andere Seite der Taster" lasse ich immer an einen Port laufen. Nun kannst du sofort in einem Interrupt die Taster auslese. Mal angenommen, du hast eine Zeilenfrequenz von 64 Hertz, dann wird jeder Taster alle 15,6ms ausgelesen. Ist er beim ersten Fragen noch am Prellen, so kann er entweder offen oder geschlossen sein. In beiden Fällen ist dies kein Problm, da er spätestens nach 31ms, wenn er das nächste mal ausgelesen wird, definitiv geschlossen oder offen ist. Da ich bisher noch keinen Taster hatte, der langsamer prellt kannst du das Prellen von Tastern im Matrixbetrieb eigentlich ausschließen. Und bedenke : Nicht auf die Timerfrequenz kommt es an, sondern auf die Frequenz mit der du effektiv deine Taster ausliest. Ich mache dies immer so (schon 3 Projekte mit Matrixgesteuerten 7-Segment Anzeigen) und habe noch nie Prell-Probleme gehabt. Du kannst dir in der Codesammlung mal meinen Belichter anschauen - der funktioniert genau nach dem Prinzip einwandfrei. ("Selbstbau Belichtungsgerät" oder "Belichter" oder so ähnlich)
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.