Hallo. Ich versuche gerade 6 MAX7221, also zwei RGB Matritzen, erst einmal testweise mit einem Attiny2313 über Soft SPI anzusteuern. Später soll das ganze mit einem Atmega328 betrieben werden, der aber noch nicht da ist. Ich habe das Problem, dass die IC's keine Regung auf mein Programm zeigen. Ich hatte zwischenzeitlich beim verrücken des Aufbaus oder anderen Nebeneffekten das Phänomen, dass die gesamten LED's in zufälligen Farben geleuchtet haben. Hab ich dann jedoch die Schaltung aus und wieder ein geschaltet war der Effekt weg, oder die LED's leuchteten in anderen Farben. Somit weiss ich schon mal, dass die Hardware an sich funktioniert. Ich habe mich schon durch das Internet gegoogelt und diverse Seiten mit soft SPI Code und auch soft SPI code zu dem MAX7221 gefunden, jedoch hat davon nichts funktioniert. Also habe ich mir meine eigene Funktion geschrieben und die auf den Ablauf des MAX7221 angepasst. Ich bezweifle jedoch, ob die Funktion das richtige Timing hat und ich weiss auch nicht, ob es überhaupt beim SPI Timing grenzen gibt, da im Datenblatt immer nur Minimas angegeben sind, über die ich weit hinaus komme, allein schon durch den 8Mhz Takt des µC. Mein Programm habe ich Angehängt. Die UART schnittstelle benutze ich nur zum Debuggen.
Ich habe bei meinen Versuchen immer ein Oszilloskop dran gehängt. Dann konnte man schauen, was wirklich auf dem Bus passiert. Alles andere ist herumraterei. Besorg dir ein Scope, oder einen Logicanalyzer und schau mal, was da wirklich gesendet wird.
Ja das hab ich auch schon überlegt. Am Montag wollte ich mir die Teile für ein USB Oscilloskop holen. Aber die Reihenfolge vom Pin an und ausschalten ist richtig?
Ich melde mich nach längerer Abwesenheit mal zurück. Ich habe in der zwischenzeit meine schaltung komplett in betrieb genommen und nutzte nun den Atmega328p und Hardware SPI. Aber auch hier habe ich massive probleme, die sich durch tagelanges googeln, datenblätter studieren und rum probieren ncht ngelößt haben. Ich habe jetzt das Phänomen, dass sobal ich die Schaltung einschalte, die LED's in bunten farben leuchten. Soblad der SPI etwas überträgt sind die LED's während der übertragung aus, nur um dann wieder bunt zu leuchten, manchmal sogar in anderen farben als vorher. Ich habe mir das USB AVR Lab von Ulrich Radig (http://www.ullihome.de/wiki/USBAVRLab/index) zusammen gebaut und die SPI-Virtual UART Bridge genommen um damit zu sehen, ob der µC alles richtig sendet. Dabei habe ich festgestellt, dass die Befehle von der SPI schnittstelle nicht richtig gesendet werden, oder dass der SPI Logger selbst bei fck/128 nicht schnell genug ist um alles mit zu bekommen. Ich sende meine Daten immer 6 mal, für jeden MAX ein mal, jedoch zeigt der logger mir, dass nicht jeder befehl gesendet wird und dass auch nicht jeder befehl 6 mal gesendet wird, sondern immer unterschiedlich oft. Ein befehl besteht bei mir aus erst die Adresse und dann die Daten. So langsam fällt mir da nichts mehr ein, was ich verändern müsste, um die Schaltung zum laufen zu bekommen. Ich habe auch schon jede einzelne LED auf ihre funktion überprüft, und sie funktionieren jetzt einwandfrei, also leuchtet die matritzen nicht so bunt, weil die led's nicht funktionieren. Ich habe auch schon spaßes halber die Zeilen und Spalten Pins vertauscht, um zu sehen ob die Matritzen dann dunkel bleiben, dann leuchteten Sie aber genau so bunt wie zuvor. Ich habe nochmal mein aktuelles Programm angehängt, vielleicht findet ja einer der Experten einen Fehler darin. Killerawft
>Ich habe nochmal mein aktuelles Programm angehängt, vielleicht findet ja >einer der Experten einen Fehler darin. Das Programm ist in Ordnung. SPI2X liegt zwar nicht in SPCR, aber das macht hier nichts aus. Du hast Probleme in deiner Hardware. Leider gibt es weder einen Schaltplan von dir noch ein Foto vom Aufbau. Schlechter Aufbau oder fehlende Abblockkondensatoren. Das kann alles mögliche sein.
Hier ist der Schaltplan. Allerdings habe ich die Pins von oft SPI auf Hardware SPI umgelötet. Der rest ist so geblieben. DIe Munis pole der LeD's habe ich an die Zeilen gesteckt und die Plus pole an die Spalten.
Sorry Killerawft, ich sehe leider nichts. Wäre es zu viel verlangt eine lesbare (Grafik, PDF) Datei anzuhängen?
>ich sehe leider nichts.
Ich schon. AVCC und AGND sind am uC nicht angeschlossen.
Das ist schon mal nicht erlaubt.
Bei Matrize gibt es zwei Abblockkondensatoren für
drei ICs. Da fehlt ja schon mal einer. Und ich gehe
davon aus das die beiden vorhandenen Cs mit Sicherheit
schlecht platziert sind.
Ich habe jetzt die AVCC und AGND mit vcc und gnd verbunden und 2 Kondensatoren an 2 IC'S direkt an Vcc zu GND gelötet, da ich nur noch 2 hier rum liegen hatte udn habe dann auch nur 3 IC's angeschlossen. Jedoch zeigt sich das gleiche bild wie vorher. Es leuchten alle LED's bunt. Für die Leute, die kein Eagle haben, habe ich meinen Schaltplan nochmal als Bild angehängt.
In der Zwischenzeit war ich bei Conrad und habe noch ein paar 100nF keramik kondensatoren gekauft und die an die Vcc pins der restlichen IC's gelötet. Dann habe ich das ganze wieder in betrieb genommen und wieder sind alle led's nur bunt am leuchten. Ist es vielleicht notwendig den SPI Bus zu terminireren oder Pull down widerstände o.ä. ein zu löten? Vom µC bis zum letzten IC sind es ca 30cm Leitungsweg.
Pin 9/10/11 liegen jedoch an Port D 5/6/7. Deine Konfiguration ist falsch. #define SPI_SCLK PB2 #define SPI_DATA PB0 #define SPI_CS PB1 #define SPI_PORT PORTB
Heute habe ich mal die LED's alle im sekunden takt ein und aus schalten lassen und siehe da, sie tun es sogar. Das komische ist nur, wenn ich die LED's nur an ein IC stecke leuchten alle LED's wie sie es sollen. Stecke ich jedoch die anderen 2 oder alle 6 IC's mit ran, leuchten wieder nur alle LED's bunt, also einige setzten aus. Zwar blinken Sie auch und lassen sich abschalten usw, also die IC's tuen was sie gesagt bekommen, jedoch leuchten nicht alle led's, wenn alle IC's an LED's angeschlossen sind. Ich betreibe meine Schaltung mit einem 5V 2A Steckernetzteil und wenn alle IC's voll an sind, zieht die Schaltung 760mA, also von der Stromversorgung sollte das eigentlich klappen. Hat jemand von euch eine Idee woran es ligen könnte? sind die widerstände an RSet vielleicht falsch für eine PLCC6 RGB LED, sodass das IC nicht genug strom für alle led's liefert? Laut Datenblatt sollten das eigentlich die richtigen widerstände sein, aber das wäre das einzige, was mir noch einfällt. Killerawft
Durch das Multiplexen fließen sehr hohe Impulsströme. Man sollte eine GND-Plane verwenden. Auch sollte ein >=100µF auf das Board und natürlich die obligatorischen 100nF Pillen an jeden IC nahe VCC.
Ich habe die komplette obere Fläche der platine als GND genutzt und die untere als Vcc. Das mit den 100 Micro F werde ich mal testen, aber erst heute abend oder morgen. Jetzt habe ich keine Zeit.
Meine bescheidene Meinung und mein eigenes Vorgehen bei einer Neuentwicklung ist es immer für den µC eine evaluierte Umgebung zu nehmen. Also in meinem Fall z.B. ein SDK600. Die neu entwickelte HW kommt dann erst mal aufs Breadboard oder wenn's damit nicht geht auf einen Prototypen. So lässt sich leicht mit Hilfe eines Logikanalysators, oder in system debugging feststellen wo der Fehler liegt. Eine Fehlfunktion des µC selbst ist bei Verwendung eines SDK oder EvalBoards schon fast von selbst ausgeschlossen. Haut man alles direkt auf die selbst entworfene Platine sind die Fehlerquellen so mannigfaltig dass eine Analyse sehr kompliziert und Zeitintensiv sein kann.
Ich habe auf dem Handy kein Micro Symbol ;) und ich habe vorher die Schaltung mit einem eigenen test board und einen Attiny2313 getestet und die gleichen Probleme gehabt. Für ein professionelles testboard mit JTAG o. ä hab ich nicht das Geld und bis jetzt auch noch keinen zwingenden bedarf gehabt.
Wenn die Schaltung schon auf einem eigenen Testboard, ich gehe davon aus, dass ansonsten die Controller auf dem Testboard einwandfrei arbeiten, nicht funktioniert, dann macht es doch keinen Sinn die Schaltung komplett mit Peripherie aufzubauen. Wenn man keine professionellen Tools hat macht es um so mehr Sinn seine Schaltungen Step by Spep zu realisieren..
So ich habe jetzt zwei defekte LED's ausgetauscht, nachdem die endlich geliefert wurden und ich habe an jedes IC einen 470µF ELKO angelötet, parallel zu einem 100nF Kerko. Außerdem habe ich an die beiden Platinen am eingangs Stecker ebenfalls einen 470µF ELKO parallel zu einem 100nF KerKo gelötet, somit sollte die Spannung stabil bleiben. Desweiteren habe ich die Zeilen und Spalten Kabel nicht mehr über eine Steckverbindung mit den IC's verbunden, sondern die Kabel direkt an die Stiftleisten angelötet, um auch Kontakt Schwierigkeiten auszuschließen. Trotzdem leuchtet die Matrix bunt wie bisher und einige LED's flackern, wie bisher. Also in allem, alles wie bisher leider :( Killerawft
Ich habe eben auch noch etwas interessantes herausgefunden. Ich habe zum testen die LED's in Rot, Grün, Blau und weiss nacheinander alle gleichzeitig leuchten lassen, also erst alle rot, dann alle grün usw. und es gibt einige led's die bei den einzelnen farben garnicht leuchten, wenn ich die Matrix aber weiss leuchten lasse, leuchten diese in rosa.
Ich habs jetzt mit den MAX7221 aufgegeben und verwende lieber WS2812 LED Pixel. Ich bekomme das einfach nicht hin und die LED Pixel habe ich schon öfter ohne Probleme angesteuert. Danke an alle die mir hier Tips gegeben haben und sich die Mühe gemacht haben sich Gedanken über meine Schaltung zu machen.
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.