mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 7-Segment und entprellung gleichzeitig?


Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Paul (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"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

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Christoph Wagner (christoph)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.