- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 33

Thema: MAX6958 - 7-Segment-Anzeigen leuchten nicht

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31
    Anzeige

    Praxistest und DIY Projekte
    Danke für die Mühen, geht auch nicht, grrr

    Ich hab schon die Firma angeschrieben, die wollen mir nochmal einen Schaltplan und Code-Beispiele senden.
    Auch die Displays hab ich schon x-Mal neu aufgebaut, weil ich dachte, ich hab da was falsch gemacht, aber aus den Ausgängen der LED kommt kein Mux raus.

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Das gibt´s´doch nicht... hast Du schon mal mit dem Display Test Register rumgespielt? Das aktiviert alle Display-Segmente mit einer Helligkeit von 28/64, so dass man auf jeden fall was sehen müsste. Übrigens ist die Intensität nach dem Einschalten erstmal bei 4/64, was laut Datenblatt einem Strom von gerade mal 1,4 mA entspricht. Bei einem normalen LED-Display dürfte da nicht allzuviel zu sehen sein.

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31
    Zehner = X / 10
    Zehner = Zehner Mod 10
    Einer = X Mod 10

    I2cstart
    I2cwbyte &b01110000
    I2cwbyte &B00000001
    I2cwbyte &B00000011
    I2cwbyte &B00010000
    I2cwbyte Einer
    I2cwbyte Zehner
    I2cstop

    Also mit der Einstellung leuchtet überhaupt irgendwas an dem Display.
    Leider ist es nur 0(0). Wobei die erste Null dauerhaft leuchtet, wenn "Zehner" 1,3 oder 5 ist.
    Wenn dann "Einer" 0,1,2; 4,5,6 ;8,9 ist leuchtet die zweite Null dazu, aber nur wenn die erste schon an ist.

    Ich raff das einfach nicht. Vielleicht hilft ja MAXIM (nicht die Zeitschrift) mit einer versprochenen Antwort weiter.

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Aber so kann es auch nicht funktionieren! Das wird vielleicht etwas klarer, wenn Du Dir mal genau vergegenwärtigst was wirklich passiert:

    Am ersten Byte (&b01110000) erkennt der Chip, dass er gemeint ist.
    Das zweite Byte (&b00000001) sagt ihm, welches Register er als erstes beschreiben soll.
    Das dritte Byte (&b00000011) geht somit ins Decode Mode Register (Adresse 0x01).

    Soweit, so gut. Aber danach geht´s schief:

    Der MAX kann doch nicht wissen, dass das nächste Byte jetzt wieder eine Adresse sein soll! Er versteht auch dieses Byte (&b00010000) als Datenbyte und schreibt es automatisch ins nächste Register (0x02). Das ist das Helligkeits-Register, und &b00100000 bewirkt dort 32 von 64 Helligkeitsstufen, also 50%.

    Der Wert von "Einer" geht dann an die Adresse 0x03, und "Zehner" an 0x04. Letzteres ist das Configuration Register, in dem allerlei Einstellungen festgelegt werden, die ich mir jetzt im Einzelnen nicht durchgelesen habe. Es könnte aber erklären, weshalb die beiden Nullen so unterschiedlich angezeigt werden, je nachdem was der Inhalt dieses Registers ist.

    Die eigentlichen Digit-Register 0x20 und 0x21 werden aber überhaupt nicht erreicht - und deshalb werden Dir auch immer nur Nullen angezeigt!

    Wie gesagt - wenn Du den Chip einmal angesprochen und ihm das erste Adress-Byte gesendet hast, schreibt er alle weiteren Bytes ganz stur in die folgenden Register! Für einen Adress-Sprung müsstest Du m.E. die Übertragung beenden (I2cstop) und mit der gewünschten Adresse neu starten (I2cstart, I2cwbyte &b01110000, I2cwbyte neue_Adresse, I2cwbyte Datenbyte_1, I2cwbyte Datenbyte_2...., I2cstop).

    Die relevanten Register liegen ja in zwei Blöcken beieinander: Das Decode Mode Register (0x01) und das Helligkeitsregister (0x02), und dann die Digit-Register (0x20 und 0x21). Das müsste also in zwei I2c-Sequenzen machbar sein!
    Geändert von Sauerbruch (16.11.2014 um 23:56 Uhr)

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31
    Hmm. Bin auf Dienstreise und am Mittwoch wieder zu Haus. Dann 'Spiel' ich noch ein wenig rum

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31
    Ok, das mach Sinn.

    Ich versteh aber die Schreibweise noch nicht.
    Ist denn 0x20 das Gleiche wie 100000?

    Und bei dem Code passiert auf dem Display gar nichts

    I2cstart
    I2cwbyte &B01110000
    I2cwbyte &B00000001
    I2cwbyte &B00000011
    I2cstop


    I2cstart
    I2cwbyte &B01110000
    I2cwbyte &B00010000
    I2cwbyte Einer
    I2cwbyte Zehner
    I2cstop
    Geändert von therealosram (19.11.2014 um 22:00 Uhr)

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    19.11.2014
    Beiträge
    6
    Hallo,
    Ich hab den max 6958 mal mit nem Raspberry Pi getestet. Bei mir funktioniert nur der decode mode noch nicht.
    Schreibt ihr auch in das Configuration(0x04) Register 0x01? (Nach dem Startup ist der max6958 noch im Shutdown mode)
    Dann einfach für die entsprechende Anzeige(0x20 - 0x23) die Segmente wie im Datenblatt auf Seite 10 Tab. 5 einschalten.

    MfG
    Christian
    Geändert von christianb (20.11.2014 um 00:36 Uhr)

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Ich versteh aber die Schreibweise noch nicht.
    Ist denn 0x20 das Gleiche wie 100000?
    So ist es.

    Die Zahl 20 ist im Hexadezimalsystem das gleiche wie die Zahl 00100000 im Binärsystem - beides entspricht 32 im Dezimalsystem. Damit man erkennt, dass eine Zahl im Hexadezimalsystem ist, gibt es mehrere Vorsätze. Gebräuchlich (und im datenblatt des MAX verwendet) ist 0x...

    Bascom macht es etwas anders: Zahlen ohne irgendwelche Vorsätze werden als Dezimalzahlen interpretiert (denn damit sind wir einfach gewohnt umzugehen).
    Der Vorsatz &b signalisiert Bascom, dass eine Zahl im Binärformat kommt (also nur 0 und 1), und &h kündigt eine Hexadezimal-Zahl an (also 0-9 und A-F).

    In Bascom würde man also sagen 32 = &h20 = &b00100000.

    Mit der Rechner-App unter Windows und OS X kann man übrigens Zahlen ganz einfach zwischen diesen drei Systemen hin- und her konvertieren!

    Im Übrigen ist der Hinweis von Christianb sehr interessant, dass das Configuration Register nach dem Einschalten im Shutdown-Modus ist. Ich muss gestehen, mich zu diesem Register noch nicht belesen zu haben. Das könnte ich heute aber schaffen, denn ein "falscher" Wert in diesem Register scheint einem ja auch einen ganz schönen Strich durch die Rechnung machen zu können
    Geändert von Sauerbruch (20.11.2014 um 06:46 Uhr)

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    So - jetzt habe ich mich auch über das Configuration Register belesen:

    In diesem Byte kann man lediglich die Bits 5 und 0 setzen. Bit 5 = 1 löscht die Inhalte aller Digit-Register, das muss also 0 sein. Bit 0 muss dagegen auf 1 gesetzt werden, um vom Shutdown-Modus (= alles dunkel) in den Normal Mode zu wechseln.
    Kurz und gut: Das Configuration Register (Adresse 0x04) sollte mit &b00000001 beschrieben werden.

    Davor kommt aber noch das Register an Adresse 0x03, das Scan Limit Register. Ich verstehe zwar nicht ganz dessen Sinn, laut Datenblatt bedeutet &b00000011 in diesem Register "Display digits 0,1,2,3 and segments 0,1,2,3,4,5,6,7" - und das klingt gut.

    Zusammengefasst müsste es so vielleicht wirklich gehen:

    I2cstart
    I2cwbyte &b01110000 (MAX adressieren)
    I2cwbyte &b00000001 (Erste Registeradresse ist 0x01)
    I2cwbyte &b00000011 (dieses Byte kommt in´s Decode Mode Register an 0x01)
    I2cwbyte &b00100000 (dieses Byte kommt ins Helligkeitsregister an 0x02)
    I2cwbyte &b00000011 (in´s Scan Limit Register an 0x03)
    I2cwbyte &b00000001 (in´s Configuration Register an 0x04)
    I2cstop

    I2cstart
    I2cwbyte &b01110000
    I2cwbyte &b00100000 (es ginge auch &h20 !!)
    I2cwbyte Einer
    I2cwbyte Zehner
    I2cstop

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31
    JEAHHHHHHHHHHHH, it works right that way. THANX
    Resümierend, warum habe ich das nicht gerafft?

    1. Das Datenblatt ist sehr kompliziert geschrieben und man muss sich wirklich Zeit nehmen, um das zu verstehen.
    2. Decode-Mode bedeutet, dass nicht nur die reinen Balken der Anzeigen angesprochen werden, sondern die Zahl auch dargestellt wird. Auch wenn es sich um eine Hexadezimale Ausgabe handelt, was bei Zahlen von 0 bis 9 nicht ins Gewicht fällt.
    3. STOP bedeutet, dass das automatische Hochzählen gestoppt wird und der nächste Binärwert wieder als Adresse und nicht als Wert gelesen wird.


    jetzt läufts. Danke nochmals.

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Ähnliche Themen

  1. Verkaufe 100mm 7 Segment anzeigen
    Von atmega318 im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 0
    Letzter Beitrag: 14.04.2013, 14:13
  2. 7 Segment Anzeigen ?
    Von KrosseKrabbe im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 6
    Letzter Beitrag: 14.04.2011, 20:20
  3. 2-Farbige 7-Segment-Anzeigen?
    Von Jaecko im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 10.05.2009, 18:02
  4. k8055 und 7-Segment Anzeigen?
    Von elvis im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 16.05.2007, 15:09
  5. unbekannte 7-Segment-Anzeigen
    Von orph im Forum Elektronik
    Antworten: 14
    Letzter Beitrag: 08.05.2006, 00:07

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress