Ich hab mir überlegt und auch etwas herumgespielt mit 7-Segment
anzeigen.
Wenn ich die jetz multiplexen möchte also ein par transis und nen mega,
was dann die perfekten zeiten sind, welche dafür nötig sind, dass keil
flackern auftritt, und die segmente nicht "nachläuchten" also immer noch
ein bisschen läuchten obwohl auf dem segment nix zu sehen ist.
Ich hoff jemand hat da etwas erfahrung gesammelt.
Grüße
Wenn da was "nachläuchtet" (schreibt man übrigens nicht mit ä), dann ist
die Multiplexsteuerung falsch programmiert.
Perfekte Zeiten? 100Hz und mehr. (aber nicht zu hoch in den kHz-Bereich
gehen, sonst führen evtl. die Schaltzeiten von Transistor & Co. evtl.
dann doch wieder zum "nachläuchten")
50Hz reichen nicht, 100 schon. Die obere Grenze ergibt sich meist aus
den EMV Anforderungen, das Ding soll ja andere Geräte nicht stören, und
bei Multiplexanzeigen fliessen recht hohe Ströme. Daher legt man bei
kommerziellen Anzeigen wert auf langsamen Ansteig und Abfall der Ströme,
das bremst.
Ist die Multiplexanzeige bewegt, kann man mehr als 100Hz benötigen.
hab in meinem Programm jetzt halt 450 mikrosekunden wo die an ist, und
dann schalt ich die wieder aus und die nächste wieder an und isgesammt
halt 5 stück.
Ich werds mir nacher mal durchrechnen, aber dankeschonmal.
CU
P.S.: 50 und 100 Hz sind bei den fernsehern doch auch der fall gell ;)
Oberhalb 100 Hz Wiederholfrequenz flackert nichts mehr, ich nehme immer
Werte so zwischen 120 und 150 Hz. An den Prozessortakt angepasst und auf
gute Teilbarkeit optimiert.
Nachleuchten vermeidest Du, indem Du beim Wechsel zuerst den
Digittreiber abschaltest, dann die neue Segmentinformation an die
Anzeige ausgibst und am Schluß den nächsten zugehörigen Digittreiber
wieder einschaltest.
Also nicht bei aktivem Digittreiber die Segmenansteuerung wechseln, das
sieht man.
Reinhard
Jo vorher würde ich machen, aber das war eins meiner ersten projekte und
das fand ich echt schon gut ;) naja okay das nächste mal dann.
Das mit der übergabe daran hab ich gar nicht gedacht, ich mach mir grad
das layout für ein 5 stelliges display so wie ein LCD nur mit 7-Seg, da
werd ich mir dann mehr mühe machen ;)
wie MaWin schon sagte:
100 Hz reichen nicht unbedingt.
Beim Fernseher fällt es nicht auf, da das Bild bewegt ist und (bei
röhren) leicht nachleuchtet.
wenn du eine LED mit 100Hz und geringem Duty-Cylce pulst und deinen Kopf
bewegst (oder die LED) hast du so einen Perlenschnur-Eeffekt.
Das kann ganz schön unangenehm sein.
Edit:
>das hat nix mit Layout zu tun, sondern etwas mit dem Timing beim>ansteuern der Segmente und Digits ....
würd ich auch vermuten.
Zb, dass du erst den einen Port umschaltens, dann den anderen. -> die
falschen LEDs gehen erst mal ganz kurz an.
um das zu beheben must du den anderen Port erst ausschalten, dann den
einen an und dann den anderen wieder mit dem neuen Wert.
Okay habs jetzt mal soweit verbessert, und zuerst das neue zeichen
"angelegt" und dann die masse durchgeschalten. funktioniert perfekt!
DANKE!
Aber jetzt nochmal zu der frequenz, wenn ich da jetzt immer 1ms warte
pro segment, dann macht das mich pro durchlauf eines Taktes ja immer 5
ms also geht mir da ziemlich die rechenleistung verloren.
wenn ich jetzt nicht alzu lang warte, dann werden die segmente dunker ->
auch doof...
irgendwie muss es da doch eine andere lösung geben oder???
Guten abend noch
CU schrieb:
> Aber jetzt nochmal zu der frequenz, wenn ich da jetzt immer 1ms warte> pro segment, dann macht das mich pro durchlauf eines Taktes ja immer 5> ms also geht mir da ziemlich die rechenleistung verloren.
Nö, Multiplexen ist Standard, kostet unter 1% CPU-Zeit (in C).
Du muß ja im Timerinterrupt nur 3 Ausgabebefehle machen, das schafft man
schon.
Für 5 Digits brauchst Du im SRAM 5 Byte als "Bildspeicher" und ein Byte
zum Zählen, welches Digit grad ausgegeben werden soll.
Peter
@ CU (Gast)
>Aber jetzt nochmal zu der frequenz, wenn ich da jetzt immer 1ms warte>pro segment, dann macht das mich pro durchlauf eines Taktes ja immer 5>ms also geht mir da ziemlich die rechenleistung verloren.
Nöö, wenn man sich mal über das Thema LED-Matrix und Interrupt
informiert, ist das alles ganz einfach.
>irgendwie muss es da doch eine andere lösung geben oder???
Nicht das Rad neu und viereckig erfinden, NACHLESEN wie es MILLIONEN vor
dir gemacht haben.
MFG
Falk
CU schrieb:
> Aber jetzt nochmal zu der frequenz, wenn ich da jetzt immer 1ms warte> pro segment,
Musst du nicht.
Du musst nur dafür sorgen, dass dein Interrupt alle 1ms kommt. Bei jedem
Interrupt schaltest du um 1(!) Stelle weiter. Also nicht alle 5 in einem
ISR Durchgang.
EDIT: Bisher war ja von Interrupt noch gar nicht die Rede, sehe ich
gerade. Sollte es aber. Am einfachsten legt man das Multiplexing in eine
ISR.
> wenn du eine LED mit 100Hz und geringem Duty-Cylce pulst und> deinen Kopf bewegst (oder die LED) hast du so einen Perlenschnur->Eeffekt. Das kann ganz schön unangenehm sein.
Sieht man auch ab und zu bei den Rücklichtern und Tagfahrlichtern von
neueren Autos. Da werden die LEDs auch gerne mal zu niedrig getaktet.
Karl heinz Buchegger schrieb:
> EDIT: Bisher war ja von Interrupt noch gar nicht die Rede
Wer Multiplexanzeige ohne Interrupts macht, muß extremst Langeweile
haben.
Peter
@ Peter Dannegger (peda)
>Wer Multiplexanzeige ohne Interrupts macht, muß extremst Langeweile>haben.
In Zeiten der Wirschaftskrise muss auch für Mikrocontroller ABM her ;-)
MFG
Falk
>Wer Multiplexanzeige ohne Interrupts macht, muß extremst Langeweile>haben.
zumal dann die Anzeige ständig flackert, wenn der µC mal mehr, mal
weniger zu tun hat (sieht man noch schön bei alten/einfachen TV-Geräten,
wenn man eine Taste drückt - da war also offensichtlich auch schon ABM
angesagt ;-)
> Sieht man auch ab und zu bei den Rücklichtern und Tagfahrlichtern von> neueren Autos. Da werden die LEDs auch gerne mal zu niedrig getaktet.
Es spart eine Spule im Wert von 12 ct.
Das ist bei den Preisen von Premium-Autos mit LED Rücklichtern natürlich
absolut wichtig, dieses Geld einzusparen, um den Reibach-Koeffizienten
hoch genug zu halten.
Das kann man problemlos zu Lasten aller anderen Verkehrsteilnehmer
machen, schliesslich hat man den TÜV-Prüfer mit hundertausenden EUR
bestochen.