Hallo, mit einem Mega8 mit 8Mhz und einem Max7221 und Bascom, möchte ich erstmal eine 7-Segment-Anzeige zum Laufen bringen. Natürlich leuchtet sie nicht. :( Ich habe die Segmente an den Segmentausgänge des Max7221 angeschlossen. Die Pins des Mega8 wie folgt: Pinb 2 (SS low) --> LOAD 12 (CS low) vom Max7221 Pinb 3 (MOSI) --> DIN 1 (Data in ) vom Max7221 Pinb 5 (SCK) --> CLK 13 (CLK) vom Max7221 Die Pins des Mega8 sind die Hardware SPI des Mega 8. nun dachte ich daß, das alles über SPI laufen müßte. hier mal der Code: $regfile = "M8def.dat" ' $crystal = 8000000 '8MHz crystal Dim Wert(2) As Byte Config Portb = Output 'Config Spi = Soft , Din = Pinb.4 , Dout = Portb.3 , Ss = Portb.2 , Clock = Portb.5 Config Spi = Hard , Data Order = Lsb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 128 , Noss = 0 Enable Interrupts Spiinit 'Testmode off Wert(1) = &H0F Wert(2) = &H0 Spiout Wert(1) , 2 'ausgabge 16-Bit Wert 'Decode off Wert(1) = &H09 Wert(2) = &H00 Spiout Wert(1) , 2 '8 Digits Wert(1) = &H0B Wert(2) = &H07 Spiout Wert(1) , 2 'Display on Wert(1) = &H0C Wert(2) = &H01 Spiout Wert(1) , 2 'Brightness Wert(1) = &H0A Wert(2) = &H07 Spiout Wert(1) , 2 Do Wert(1) = &H01 Wert(2) = &H08 Spiout Wert(1) , 2 Loop End Es tut sich gar nichts. Müßte man nicht wenigstens den Displaytest sehen, also alle Segemnt an. Irgendwie schein SPI generell bei nicht zu klappen. Wäre sehr froh über jeden Tipp.
Kommt denn was raus aus der spi-schnittstelle? also an den pins?
Danke für eure Antworten @MAtthias L Ich habe gerade mit nem Ozzi nach geschaut, also bei CLK bzw. Sck ist der Takt 200 KHz. CS Low und die Datenbyte liegen am Max7221 an. ist die Frage ob ich die richtigen Daten schreibe. @Timer Man Der Max7219 ist nicht SPI-Kompatibel, ich habe aber auch für den Typ verschiedene Programme gesucht und gefunden. Aber vielleicht kenn ich deinen Code nicht. Wenns dir nicht ausmacht kannst du ihn ja mal posten. Aber wie ist das? wenn ich &H0F01 sende sollten doch der Displaytest eingeschaltet werden, und dann alle Segment leuchten? Oder seh ich falsch?
Tut mir leid, dass ich diesen alten Thread den ich über die Suche nach MAX7219+SPI gefunden habe nochmal raushole. aber ich habe den Fehler gefunden und wollte das hier korregieren. oder hast du ihn noch selber gefunden stevensen? im Datenblatt steht am Ende von Serial-Addressing Modes: "D0–D7 contain the data, and D12–D15 are “don’t care” bits. The first received is D15, the most significant bit (MSB)." also muss in der Config "Data Order = Msb" stehen... also "Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 128 , Noss = 0". mit genau deinem Code und der geänderten Config läuft bei mir jetzt ein MAX7219 an Hardware-SPI - obwohl er ja nicht ganz SPI-kompatibel sein soll. nur wie man die Dinger jetzt kaskadieren kann ist mir noch ein Rätzel.
Daniel S. schrieb: > MAX7219 an Hardware-SPI - obwohl er ja nicht ganz SPI-kompatibel sein > soll. Das wird komischer Weise sehr oft kolportiert, ist aber falsch. Code für den MAX7221 läuft in jedem Fall auch mit dem MAX7219. Daniel S. schrieb: > nur wie man die Dinger jetzt kaskadieren kann ist mir noch ein > Rätzel. Ganz einfach, Du sendest immer soviel 16Bit-Worte, wie MAX7221 kaskadiert sind. Z.B. bei 3 Stück: 3 Worte, d.h. 6 Byte. Beim Init sind die 3 Worte gleich und beim Anzeigen jedes 2. Byte die jeweilige Ziffer. Am besten legt man sich einen Ziffernpuffer an, also bei 3 Stück dann 24 Byte groß. Peter
Peter Dannegger schrieb: > Das wird komischer Weise sehr oft kolportiert, ist aber falsch. wie kommst du denn darauf? dem Datenblatt entnehme ich: > MAX7219/MAX7221 Differences > The MAX7219 and MAX7221 are identical except for > two parameters: the MAX7221 segment drivers are > slew-rate limited to reduce electromagnetic interference > (EMI), and its serial interface is fully SPI compatible. daraus schließe ich doch, dass der MAX7219 nicht "voll SPI kompatibel" ist. oder wie verstehst du das? > Ganz einfach, Du sendest immer soviel 16Bit-Worte, wie MAX7221 > kaskadiert sind. Z.B. bei 3 Stück: 3 Worte, d.h. 6 Byte. > > Beim Init sind die 3 Worte gleich und beim Anzeigen jedes 2. Byte die > jeweilige Ziffer. > Am besten legt man sich einen Ziffernpuffer an, also bei 3 Stück dann 24 > Byte groß. > > > Peter danke dir, jetzt funktioniert des auch...
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.