Moin, ich versuche gerad eine 7*5 LED-Dot-Matrix mit dem AT90S2313 und dem MAX7219 zu programmieren. Ich wollte gerade das ganze erstmal mit dem Source von crazy horse testen. http://www.mikrocontroller.net/forum/read-1-58248.html#58269 Leider spielt die Anzeige verrückt, mal sind alle LED's an, dann resete ich wieder und alles ist aus. Normal müsste sich doch was tun, wenn ich mit init_max7219(1,5); Daten in den MAX7219 schiebe?!!? Schaltungsmäßig sollte eigentlich alles korrekt sein, Entstör - und Blockkondensatoren hab ich drin. Beide Masse-Pins sind angeschlossen. Der Controller läuft auch brav mit 10,24 Mhz. Ich habe allerdings den MAX7219 als SOL-24 Variante und mir eine Adapterplatine geätzt, die habe ich aber schon durchgemessen, da gibts keine Kurzschlüsse oder Unterbrechnungen. Kann mir jemand nen Tip geben? Mein Sourcecode ist im Anhang. Bin für jeden Ansatz dankbar, Dominik
Leider keine Ansätze, aber Erfahrungen. Ich habe den MAX7219 noch nie richtig zum laufen bekommen, und ich habe mich sehr lange und intensiv damit befasst. Meine Schaltung, Basisschaltung von Maxim, habe ich überprüft und ist in Ordnung. Habe mir sogar einen zweiten 7219 gekauft (teuer) weil ich dachte das IC ist kaputt - hat aber auch nichts gebracht. Zum Schluss habe ich die Schaltung am Parallelport eines alten PCs geklemmt und simpelst mit Q-Basic programmiert, ging aber auch nicht - es wurde mir nichts logisches angezeigt, mal hats geblinkt etc. Das einzige was mir noch einfällt wäre die Überprüfung ob die LED Segmentanzeigen auch wirklich eine gemeinsame Kathode haten.
Der MAX7219 funktioniert schon (hat er bei mir schon oft bewiesen :-) Erstmal hast du Fehler in der Portinitialisierung, die Ports für data, clk und load müssen Ausgänge sein (DDRx.x=1) Zum 2. sind meine Routinen für 4 kaskadierte MAX7219. Die init_max7219 () brauchst du gar nicht, sondern nur write_spi() und write_max7219(). write_max7219 (Adresse 0x09..0x0f, Daten); //für die Initialisierungsdaten write_max7219 (Adresse 0x01..0x08, Daten); //für die Digits write_max7219 (0,xx); //no op
Ja, der MAX7219 funktioniert sehr zuverlässig. Hier mal ein Beispielprogramm: http://home.tiscali.de/peterd/appl/soft/c51/dcf77/index.htm Da es in C ist, ist es sehr leicht auf den AVR portierbar. Für den Anzeigeteil ist nur notwendig, die benutzten Pins auf Ausgang zu setzen und die Memory-Bezeichenr (code, idata, data) raus zu kommentieren. Peter
Vielen Dank für die bisherigen Antworten. Ich bin schonmal ein Stück weiter. Jetzt werden wenigstens keine willkürlichen Sachen mehr angezeigt. Aber leider tut sich garnichts auf der Dot-Matrix. :-( Im Anhang mein jetziger Code. Dominik
Habe den Fehler schon gefunden: LOAD musste noch vor der Übertragung auf 0 und anschließend auf 1 gesetzt werden. Danke für die Hilfe!
Es muß nur nach der Übertragung eine 0-1-Flanke zur Übernahme erzeugt werden, wann Du auf 0 setzt, spielt keine Rolle. Peter
Okay. Ich habe jetzt nur noch das Problem, dass die Daten alle um 1 nach links verschoben auf dem Display stehen, also das niederwertigste Bit steht an Stelle 2 und das letzte Bit fehlt.
Sehe ich das eigentlich richtig, dass wenn ich die 8*5 LED-Matrix von Pollin habe immer nur eins pro MAX7219 verwenden kann? Oder kann man da irgendwie tricksen?
Kann es sein, dass der 19er kein echtes SPI macht, sonder nur der 21er? ich habe eine Karte mit sechs Stück MAX7219, deren Clock und Enable Eingänge zusammen herausgeführt sind, die "Data-Lines" für jeden einzeln separat. Schonmal ungewöhnlich... Naja Microsoft eben (war ein Demodisplay vom Gamepad mit Gyrosensor. genauen Namen habe ich vergessen). Hier musste ich auch selbst ran, hatte aber glücklicherweise keine Probleme. Ist aber auch schon wieder zwei Jahre her .Kinder wie die Zeit rennt. Ich weiss zwar nicht mehr genau, was mich damals geritten hat, aber ich habe den ASM Text mal angehangen. Vielleicht kann man mit der INIT was anfangen AxelR.
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.