Hallo zuammen
Ich habe ein Problem mit einem MAX7221. Ich betreibe ihn an einem
MSP430F149 über SPI.
Das Problem ist folgendes:
Irgendwie übernimmt der MAX einfach keine Daten. Die Daten kommen am MAX
an, habe ich mit dem KO gemessen. Trotzdem tut sich nichts :o(
Wenn ich die SChaltung einschalte leuchten alle LED, also der Testmode.
Dieser müsste aber wenn ich das richtig sehe nach der Initialisierung
des MAX abgeschaltet werden. (Siehe mein Code)
Weiss langsam nicht mehr weiter. Sieht zufällig gerade jemand den
Fehler? Da der Code zu gross ist habe ich mal die relevanten Stellen in
ein File kopiert.
Wäre echt toll wenn ihr mir weiterhelfen könntet!
Gruss reflection
Hallo,
ich denke dein Problem ist du übergibst nur 8 Bit und setzt dann LOAD
wieder auf High.
Das Verfahren ist folgendes:
1. LOAD auf Low schalten
2. 8 Bit für die Registeradressierung reintakten
3. 8 Bit für das Datum reintakten
4. LOAD auf High schalten
Les dir mal das Datenblatt durch.
Gruß
Udo
Ergänzung:
In der Regel kannst du den chip select Ausgang der SPI Schnittstelle
nicht für LOAD benutzen, es sei denn du kannst 16 Bit-Übertragung bei
der SPI-Schnittstelle einstellen.
Aber das ist kein Problem, nimmst einfach einen anderen Pin als Ausgang
und bedienst damit LOAD.
Das habe ich auch so gemacht.
Ich habe MOSI und SCLK vom MSP an den MAX angeschlossen. Der CS wird von
einem separaten Pin gemacht. Benutze also nicht den STE Pin.
Hier mal ein Screenshot des Schemateils
Gruss
Na dann wäre doch alles in Butter, aber leider geht immer noch nix :o)
Mache ich denn die Initialisierung korrekt oder liegt vielleicht da der
Fehler?
Gruss
Öhm, ja, sorry, soll bei P2OUT |= 0x02 natürlich heissen: Setze Chip
Select 74HCT244 high"
Hier der Code. Mit dem CS ist das speziell. Ich muss ja zuerst den 74244
aktivieren und danach den MAX7221. Dies hab ich mit dem KO gemessen und
meiner Meinung nach scheint es zu stimmen.
Was ich komisch finde ist: Wieso leuchten alle LED wenn ich einschalte?
Das würde ja auf den Testmode deuten, aber den schalte ich ja in der
Initialisierung zur Sicherheit aus.
Danke das Du mir hilfst!
Der Code für den MAX sieht ok aus, eventl. würd ich nach
"P2OUT &= 0xFD; // Setze Chip Select 74HCT244 low"
und
"P2OUT |= 0x02; // Setze Chip Select 74HCT244 high"
jeweils ein kleines Delay schalten, damit auch sicher ist, dass der 244
funktionsfähig ist. 10k Pull-Up Widerstände an LOAD und SCLK und DIN am
MAX7221 wären auch nicht verkehrt, damit sich, wenn der 244 im high-z
Modus ist, da nichts tut.
Zur Initialisierung der SPI des MSP430F149 kann ich nichts sagen, den
kenn ich nicht.
Gruß
Udo
He vielen Dank, werde ich heute Abend genauer untersuchen. Habe jetzt
mal den MAX gewechselt. Dann kann ich einen Hardwaredefekt schonmal fast
ausschliessen. Hatte eben noch einen rumliegen auch wenn ich nicht denke
das es das war. Probiere jetzt halt eins nach dem anderen
auszuschliessen.
Danke für die Hilfe, werde mich sicherlich melden wenn ich weiss an was
es lag, oder wenn ich nicht weiterkomme ;o)
Greets
Hallo zusammen
So, ich bin nun ein wenig schlauer, aber es läuft immer noch nicht.
Habe den MAX7221 gewechselt und es leuchten immer noch alle LED.
Ebenfalls habe ich festgestellt, dass wenn ich den MAX gar nicht
initialisiere, doch alle LED leuchten. Laut Datenblatt müsste er ja dann
in den Shutdown Mode gehen und alle LED löschen. Schon das macht er
nicht.
Die Daten kommen am MAX an, SCLK, DIN und CS (direkt am MAX gemessen)
Was mir nun aber komisch erscheint: Messe ich am MAX an DOUT, ist das
inaktive Level auf 0, wenn ich aber am DIN messe ist das inaktiv Level
1. Ist das so korrekt? Ich kann so viel ich weiss meinen uP gar nicht so
einstellen das der inaktive SPI Level auf 0 liegt. Den SCLK habe ich so
eingestellt, also dort ist der inaktive Level auf 0, wie im Datenblatt
beschrieben.
Weiter, wenn ich am SCLK Pin messe kommen 8 Clocks, dann eine kurze
pause, da er ja wartet bis die Daten übertragen wurden, und dann wieder
8 Clocks. Habe eben nur ein 8 Bit Register für die SPI Schnittstelle,
kein 16Bit. Kann das zu Problemen führen? Also ich meine, dass der Clock
"unterbrochen" wird? Die Daten müssten ja trotzdem ankommen, oder sehe
ich das falsch?
Gruss
Hallo,
das die Clock-Impulse unterbrochen sind, ist nicht schlimm, nur LOAD
darf dabei nicht High werden.
Wie sieht denn dein Layout aus? Die MAX7219 und 7221 reagieren
empfindlich auf zu schmale Masse- und Versorgungsspannungs-Leiterbahnen.
Außerdem sollte der Versorgungsspannungs-Pin so nah wie möglich am Pin
mit einem 10µF und einem 0,1µF Kondensator, vorzugsweise SMD-Kerko,
versehen werden.
Gruß
Udo
Hm, habe Wrap Drähte genommen. Ich habe eben nur die SMD Variante
bekommen und musste darum improvisieren (Lochrasterplatine).
Kondensatoren habe ich 10uF und 100nF in ca. 3cm Abstand. Zuerst hatte
ich die Kondensatoren nicht und da hat manchmal gar nichts geleutet,
aber nur jedes 10Mal wenn ich ihn eingeschaltet habe. Es wird auch nix
warm oder so. Speisung ist stabil, kommt von einem Traco DCDC Wandler
der 660mA an 5V liefert.
Gruss von einem der sich jetzt dann die letzten Haare vom Kopf reisst
:o)
Ach ja, ich habe ja einen 27kOhm Widerstand für RSet des MAX. Die LED
hat ca. 2.1V Vorwärtspannung und ich wollte das ganze bei ca 20mA
betreiben. Müsste doch hinkommen, oder? Nicht das der irgendwie da ein
Problem hat. Habe ja auch alle scan Digits an, also 0x07...
Gruss
Hä, also ich habe schon sehr viele Sachen so aufgebaut, das war noch nie
ein Problem, auch mit Dingen die noch viel höher getaktet waren. Wieso
soll das nicht gehen? Meine, ich habe schon nicht die dünnsten Wrap
Drähte genommen, dicker ist der Pin am MAX auch nicht. Da ich Layouter
bin von Beruf, aber Privat halt nicht an LP rankomme mache ich das immer
so. Die Datenleitungen sind auch nicht direkt neben den Ausgängen ect.
Aber weisst Du wie das mit den Level an DIN aussieht? Muss der im
inaktiven Fall auf 0V sein oder 5V?
Gruss
27K für Iset ist schon ok, aber wie schon gesagt, du brauchst ein
vernünftiges Layout, sonst wird das nichts, glaub mir. Du reist dir
letztendlich auch noch die Kopfhaut ab....;))
Sorry, aber das verstehe ich als Layouter jetzt nicht. Solange alle
Signale die ankommen mit dem KO gemessen i.O sind, was soll dann ein
Layout bringen? Ich sehe ja die Speisung vor mir und die ist glatt, also
keine Einbrüche. Will dir nicht blöd kommen, aber bitte erkläre es mir.
:o)
Gruss
Das Problem ist nicht die Taktfrequenz, sondern der Strom der durch das
Multiplexen der Anzeige-LED's kurzzeitig fließt. Wenn du keine
ausreichen Ground- und VCC- Plane hast, machen die MAX was sie wollen,
nur nicht das was du willst.
Gruß
Udo
Ich geh mal davon aus, dass KO = Oszilloskop heißen soll. Wie hoch ist
denn die Grenzfrequnz die dein KO noch aufzeichnet und bei wieviel dB
abfall??? Wir reden hier von Spitzen im ns-Bereich.
Ok, ist zwar denke ich ein gutes Teil, ist ein Fluke Scopemeter mit
200MHz. Jetzt bin ich ja voll am A.... :o) Naja, mal schauen was ich
mache, nochmals bau ich das Teil nicht auf...
reflection wrote:
> Was meinst Du Peter, kann das auf einer Lochrasterkarte laufen?
Natürlich.
Ich mache fast alle Entwicklungen erstmal auf Lochraster.
Peter
>> Aber nun ist guter Rat teuer...
Nö, meiner war kostenlos.
Aber wie im richtigen Leben meinen die Leute alles was kostenlos oder
preisgünstig ist, muss schlecht sein....
Schau dir mal diesen Thread an
Beitrag "LED_Laufschrift mit Mega 32 und MAX 7219"
Letztendlich hat er mir seine Schaltung zugesandt. Ich habe die Masse-
und die VCC-Leitungen verstärkt und direkt an den Pins der MAX
SMD-Kerkos gelötet und siehe da, es funktionierte. Wenn du willst, kann
ich dir seine e-mail geben, dann kannst du ihn selber fragen.
Gruß
Udo
Hallo Udo
Nene, das glaub ich Dir schon. Frage mich nur gerade, wenn der Bautstein
so empfindlich ist, ob das wirklich die richtige Wahl ist... Werde mir
wenn möglich morgen einen Adapter bauen um den MAX, der ja SMD ist, auf
ne kleine Platte packen (gefräst) und ihn quasi auf THD umzubauen. Dann
kann ich auch gleich die Kondensatoren direkt daneben platzieren.
Gruss reflection
So, es läuft....... immer noch nicht!
Ich habe den MAX nun nochmals aufgebaut. Die Kondensatoren 100nF und
10uF sind direkt über den IC gelötet und mit richtigen Drähten (1mm) an
die +5V und GND gehängt. Würde mal sagen andere ziehen darüber 10A, aber
lassen wir das ;o) Sieht alles ziemlich verbastelt aus, da der MAX ja
SMD ist, aber die Lötstellen gehen einfach nicht mehr dicker.
Problem: Jetzt leuchten beim Einschalten entweder alle oder keines,
chance ca. 50:50. Vom Programm her ist es egal, das sollte ja laufen.
Auch mit einem Layout bekomme ich keine dickeren Leitungen hin, eher
dünner, da das Teil ja SMD ist.
Was mir noch eingefallen ist, aber was ja eigentlich nicht sein kann...
Meine Verbindungen vom MAX zur Matrix sind ca. 30cm lang
(Flachbandkabel) Da ja aber ein Strom von 20mA fliesst, sollte da ja
kein Problem entstehen, oder irre ich? Ansonsten wäre der IC eh für mich
gestorben da ich einen Cube damit aufbauen möchte und somit die
einzelnen Leitungen sicher 30cm werden.
Gruss
Hallo,
habe mir jetzt nicht alle Beiträge durchgelesen, habe aber auch schon
meine Erfahrungen mit MAX Treibern gemacht. Das ganze
Adressregistersystem kann einen ganz schön verwirren, daher rate ich dir
das Datenblatt besonders wegen der Initialisierung nochmal genau
durchzulesen, das war zumindest mein Problem. Ich bin dann auf treiber
von TI umgestiegen, die sind einfacher anzusteuern ;)
30cm stellt kein Problem dar, hab schon 2 Meter fast fehlerfrei
hinbekommen :)
Gruß
Kai
Aha, na dann bin ich wenigstens was die Kabellänge anbelangt beruhigt.
Ich denke die Initialisierung sollte korrekt sein, da ich diverse andere
Programme im Netz gefunden habe und die auch nichts anderes machen als
ich.
Ich denke langsam aber sicher das der MAX nix taugt. Sorry die Aussage,
aber ich bin auch nicht erst seit gestern Elektroniker und hatte denke
ich schon bei weitem empfindlichere Bauteile die ich ansteuern konnte
und die dann auch funktionierten. Maxim ist sowiso ein Kandidat den ich
wo ich kann aussen vor lasse, auch in der Firma. Hatte einfach schon zu
viele schlechte Erfahrungen mit Teilen von denen, aber hier hab ich halt
wieder mal nicht wiederstehen können.
Frage: Gibt es Teile die dasselbe machen und funktionieren? Ich habe
eben einfach schlicht weder die Zeit noch die Nerven wieder ne Woche an
dem Teil rumzumessen. Kann doch nicht sein das es so ein Prob darstellt
64 poplige LEDs zum laufen zu bekommen!!! Ich könnt im Moment echt
k..... War gestern bis spät in die Nacht dran und der Erfolg ist = 0.
Messtechnisch ist das ganze nicht zu ermitteln. Die Pegel stimmen, die
Daten kommen an. CS, CLK ect. ist alles 1:1 wie im Datenblatt, nur die
Matrix macht nix.
Falls jemandem noch was in den Sinn kommen sollte wäre ich froh wenn er
sich meldet, ansonsten fliegt die Schaltung morgen in die Tonne und die
10MAX's gleich hinterher. Haben zwar auch nicht wenig gekostet, aber wie
sagt man so schön. Lieber ein Ende mit Schrecken als ein Schrecken ohne
Ende...
Gruss reflection
Ach ja, kann zwar eigentlich nicht sein, aber frage jetzt doch:
Die Daten die vom uP zum MAX gehen sind schon MSB first, oder???? Also
ich sende das Bit 8 der Adresse zuerst, sprich die don't care Bits.
Liegt da vielleicht der Hund begraben?
Gruss
reflection wrote:
> Ich denke langsam aber sicher das der MAX nix taugt. Sorry die Aussage,> aber ich bin auch nicht erst seit gestern Elektroniker und hatte denke> ich schon bei weitem empfindlichere Bauteile die ich ansteuern konnte> und die dann auch funktionierten. Maxim ist sowiso ein Kandidat den ich> wo ich kann aussen vor lasse, auch in der Firma. Hatte einfach schon zu> viele schlechte Erfahrungen mit Teilen von denen, aber hier hab ich halt> wieder mal nicht wiederstehen können.
Also ich kann das in keinster Weise bestätigen. Ich setze den MAX7219
schon jahrelang in vielen Projekten ein und er läuft wie dumm.
Hier mal mein AVR-GCC Code:
Nun ich kann einen Fehler im Programm vorerst mal aussschliessen.
Aus folgendem Grund: Initialisiere ich den MAX nicht, also ich lege
lediglich die Speisung an, müsste das Ding ja in den Shutdown Mode
gehen. Wie gesagt, manchmal leuchten aber alle LED, manchmal keines. Ca
50:50. Bevor das nicht mal funktioniert muss ich mir wohl keine Gedanken
mehr machen bezüglich Code. Wenn ich es mal erreiche, dass er sich immer
gleich einschaltet, dann versuche ich es weiter. Erreiche ich aber schon
nicht immer den gleichen Aufstartzustand, der ja fix ist, ist das
Problem wohl im IC oder dessen Beschaltung zu suchen. Als letzter
Strohhalm bleibt wohl jetzt nur noch die SMD Dinger zu schmeissen und
THD zu bestellen. Vielleicht lässt sich dann das Problem ja umgehen da
ich dann wirklich dicke Leitungen anlöten kann. Mit den SMD Beinchen ist
man halt sehr schnell am Limit. Vielleicht liegt es ja auch am 7221,
hier setzen ja glaube ich alle den 7219 ein.
Gruss
Ich nutze den MAX mit einem F2013, geht auch ohne den HC244 problemlos
trotz Aufbau auf Lochraster.
Startschwierigkeiten lagen an mir, nämlich am nicht gesetzten Bit
namens USICKPH (Clock phase select) im USICTRL1 Register.
Grüße
Hallo Kobold
Hm, Laut Datenblatt dürfte das nicht gehen. Der MAX erwartet min 3.5V an
den Eingängen. Ich dachte halt ich geh auf Nummer sicher und habe jetzt
schöne 5V Pegel an den Eingängen.
Das CKPH Bit habe ich gesetzt, darin liegt das Problem auch nicht
begründet.
Gruss
Hallo reflection,
das war ja nur so ein Gedanke, weil es bei mir daran hing.
Mit den Pegeln gibt es keine Probleme, den MSP könnte man ja auch
mit 3,6V betreiben wenn es so sein sollte.
Die zwei MSP kann man sonst nur teilweise vergleichen, da der 20xx
die 16bit in einem Rutsch raus schiebt.
Aber wie geschrieben: Problemloser Betrieb, es muss bei dir also
an etwas anderem liegen.
Grüße
>> reflection wrote:>> Vielleicht liegt es ja auch am 7221,>> hier setzen ja glaube ich alle den 7219 ein.
Der einzige Unterschied zwischen 7219 und 7221 ist der, dass der 7219
eine quasi SPI-Kompatible Schnittstelle und der 7221 eine SPI-Kompatible
Schnittstelle hat (lt.Datenblatt). In der Praxis wirkt sich das so aus,
dass es beim 7219 reicht, nach dem übertragen der Daten LOAD einmal kurz
auf Low zu ziehen, während man beim 7221 LOAD vor dem Senden der Daten
auf Low und nach dem Senden auf High setzen muss. Bei beiden werden die
Daten mit der Low-High-Flanke von LOAD übernommen.
Zu der Länge der Leitungen vom 72xx zu den Leuchtdioden kann ich nichts
sagen, bei mir waren die Abstände immer recht kurz, dafür waren bei mir
die Leitungslängen der SPI-Signale recht lang (ca.2m) ohne Probleme zu
verursachen. Ich hab mal Bilder angehängt, wie ich es gelöst habe.
Gruß
Udo
Also zur Beruhigung:
Lochraster ist beim Max kein Problem. Meine Prototypen sind auch
ziemlich wild auf Lochraster zusammen gelötet.
Die Länge der Drähte zwischen LEDs und Max waren bei mir auch schon 60
cm und es gab keine Probleme.
So, die Kiste läuft.
Probleme gab es noch einige. Hier mal was ich noch so machen musste und
feststellte. Vielleicht nützt es ja dem nächsten
Probleme die ich hatte:
1. Die Speisung muss wohl direkt abgeblockt werden. Ein paar cm zu weit
entfernt und das geht nicht mehr. Also C's direkt an IC. Jetzt läuft er
zu 90%, ca. jedes 10te Mal schaltet er sich nicht ein oder schwingt
nicht an (Anzeige bleibt dunkel)
2. Da ich mit dem MSP430 programmiere muss das Bit CKPH gesetzt werden.
Hatte ich schon, ist aber tatsächlich ein Stolperstein. Ohne dieses Bit
klappt es manchmal, manchmal nicht.
3. Ich hatte noch Probleme mit dem CS welcher ein bisschen zur falschen
Zeit kam. Mit einer Sonde sah alles gut aus, aber als ich endlich eine
zweite Sonde auftreiben konnte sah ich, dass er den Pin zu früh auf High
zieht.
4. Nachdem ich dies alles korrigiert hatte lief es immer noch nicht.
Mein Programm bestand darin den Testmode ein, resp- auszuschalten. Das
macht das MÄXCHEN aber nicht. Ich kann von Hand alle LED einschalten
oder ausschalten (mit eigenen Routinen) aber wenn ich mal den Testmode
eingeschaltet habe geht gar nix mehr. Kann ihn auch nicht mehr
abschalten, der MAX hängt sich auf (Sah ich im Debugger). Im Moment
funktioniert alles. Alle Muster die ich programmiert habe laufen,
Helligkeit kann ich verändern, aber der Testmode geht nicht. Ist nicht
tragisch da ich den ja eh nicht benötige, aber da hätte ich noch Stunden
rumsuchen können. Falls bei Euch also mal alle LED leuchten, dann
schickt einfach mal ein Bitmuster, versucht nicht den Testmode
abzuschalten, das hilft nix.
Ach ja, zu den Leitungslängen. Meine Leitungen vom MAX zu den LED sind
nun wieder Wrap Drähte, funzt auch bei 40cm tadellos.
Hoffe es nützt in Zukunft jemandem. Wollte mich noch für die tolle Hilfe
in diesem Thread bedanken!
Gruss reflection
Salu zusammen
Ich hatte ja damals (wie ihr oben lesen könnt) einige Probs mit dem
MAX7221.
Ich habe mir nun aus diesem Baustein einen 8x8x8 LED Cube gebaut welcher
auch funktioniert (ein bisschen Basteln muss halt auch mal sein :o)).
Nun zum Problem:
Der Cube wird über einen AC-DC Wandler von Traco versorgt (+5V). Diese
5V Leitung ist über eine Schalter geschaltet, die 230V hängen immer am
Wandler. So, stecke ich nun den Stecker in die Steckdose und schalte den
Cube über den Schalter ein (+5V Speisung) dann passiert gar nix oder die
Matrizen leuchten willkürlich.
Schalte ich aber den Schalter ein und stecke danach das Stromkabel in
die Netzdose, läuft das Ding zu 100%!
Ich hatte das bereits beim Aufbau der Matrix. Manchmal wenn man die
Speisung über einen Schalter legte, ging es nicht, steckte man einfach
die Bananenbuchse am Netzteil aus und ein lief es.
Kennt jemand von Euch dieses Verhalten? Ist bei allen Ebenen genau
gleich. Die Hardware ist sauber aufgebaut, Kondensatoren sind vorhanden
(pro MAX 10uF und 100nF) Der Strom der durch die LED fliesst ist ca.
10mA.
Gruss und danke im Voraus
reflection
Dann ist irgendwas faul mit Deiner Resetschaltung oder der Quarz
schwingt schlecht an.
Das Netzeil rampt VCC langsam und monoton hoch.
Ein Schalter dagegen schnell und lückend (er prellt).
Es kann auch ein Bug im MC sein. Lies mal das Datenblatt, manche MCs
benötigen ein genau definiertes Power-Up.
Das war z.B. bei den ersten AVRs das Problem (z.B. ATtiny22), daß einige
nicht richtig die Fusebits lesen oder den EEPROM überschreiben, wenn VCC
zu schnell anstieg.
Peter
Salu Peter
Also ich denke am uP kanns fast nicht liegen. Habe hier sehr viele
unterschiedliche Schaltungen die ich genau gleich aufgebaut habe. Hatte
noch nie Probs das da einer nicht mit Schwingen anfing. Der Reset des uP
funktioniert auch tadellos, an dem kann es nicht liegen. Tja, ist ja
nicht so tragisch, aber stört halt schon wenn man nicht weiss an was es
liegt.
Gruss und Danke für die Antwort
reflection