Morgen
Vorgeschichte, Prolog, Gelaber... eigentlich unwichtig also wer es eilig hat springt lieber zum zweiten Teil![]()
Ich bastele schon seit geraumer Zeit mit ein paar 5*7 Dotmatrix LED Displays rum. Das ganze leider nur sehr sporadisch aber inzwischen habe ich mich von "garkein Plan" soweit entwickelt dass ich zwei Matrizen via LPT am PC ansteuern kann. Das ganze läuft über Schieberegister, ULN2803 und UDN2981. Softwaremäßig programmiere ich alles noch mit Borland Delphi. Funktioniert zwar aber wirklich praktisch verwendbar ist diese Methode nicht.
Sind sozusagen die sprichwörtlichen Kanonen auf Spatzen.
Deswegen habe ich mir von Maxim ein paar ICs zukommen lassen.
Den MAX6953 sowie den MAX7221.
Den Max9653 kann ich noch nicht verwenden weil mir viel elektronischer Krimskrams fehlt... mein Kleinzeugsortiment ist einfach noch nicht ausgereift genug.![]()
Zweiter Teil ... darum geht's:
>>> Bild hier Datasheep MAX7219/7221 ... Bild hier <<<
Ich habe den MAX >>hier bei Maxim beschrieben<< an den LPT angechlossen und an den MAX wiederum ordnungsgemäß nach Datenblatt eine 5*7LED-Matrix.
Gleich eine Frage zuerst: Auf der Webseite ist es ein 100pF Kondensator an Pin12 des SUB-D-Steckers. Im Programm vom Maxim ist die gleiche Skizze mit einem 100kOhm Widerstand an Stelle des Kondensators. Was ist denn nun richtig?
Bild hier
Ich kam aber nach dem Anschließen zu keinem Ergebnis. Ich dachte es könnte an meinem "zusammengeschusterten" Aufbau liegen denn mir fehlts gerade an passenden Elektrokleinteilen weswegen ich die Kondensatoren und Widerstände relativ freizügig zusammengestückelt habe.
Deswegen habe ich den MAX jetzt direkt an den LPT angeschlossen. Ich weiß, das ist nicht intelligent aber bei meiner anderen Variante habe ich es auch so gemacht und es funktioniert wunderbar... den Risiken bin ich mir aber schon bewusst. Funktioniert aber trotzdem noch nicht.
Ich frage mich was ich jetzt noch falsch mache. "Angesteuert" wird der MAX doch eigentlich wie einen normalen Schieberegister, oder sehe ich das Falsch?
Also in diesem spezifischen Fall ist LOAD normal auf High.
Zum Ansteuern setze ich LOAD auf Low, an DIN nacheinander die 16 Zustände (also High/Low).
Nach jeden Bit muss dann noch CLK einmal auf High und wieder auf Low gesetzt werden. Nach den 16 Bit wird LOAD wieder High und der Zauber ist vorbei.
Oder sehe ich das falsch?
Im Datenblatt steht noch das hier:
"The data is then latched into either the digit or control registers on the rising edge of LOAD/CS. LOAD/CS must go high concurrently with or after the 16th rising clock edge, but before the next rising clock edge or data will be lost."
Das heißt doch nur dass ich nach dem 16 Bit am besten gleichzeitig mit dem 16.CLK LOAD/CS wieder auf High setzen muss, mindestens aber bevor CLK wieder geschaltet wird??
Es könnte durchaus sein dass ich einen kleinen Logikfehler in meinem Delphiprogramm eingebaut habe, aber das erklärt nicht warum das Programm vom Maxim nicht funktioniert.
Lesezeichen