- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 33

Thema: MAX6958 - 7-Segment-Anzeigen leuchten nicht

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Ich glaube das Problem ist, dass der MAX nicht wissen kann, dass &b00100000 und &b00100001 die Adressen der zu beschreibenden Register sind.
    Im Datenblatt steht folgendes:

    The address pointer in the MAX6958/MAX6959 autoincrements
    after each data byte. If multiple data bytes
    are transmitted before a STOP condition is detected,
    these bytes are stored in subsequent MAX6958/
    MAX6959 internal registers (Figure 8 ), unless the
    address pointer has reached address 01111111. The
    address pointer does not autoincrement once address
    01111111 has been reached (Table 3).

    Das heißt also, er schreibt den Wert "Zehner" noch korrekt in das Register &B00100000. Das nächste Byte (&b00100001) wird dann aber wieder als Datenbyte interpretiert und in das nächsthöhere Register geschrieben, und das Byte "Einer" in das wiederum nächsthöhere Register.

    Andersrum gesagt würde ich es mal so versuchen, einfach nur das erste Digit-Register zu adressieren (also &b00100000), und dann beide Ziffern-Bytes nacheinander zu senden. Sie müssten dann von selbst in den beiden aufeinanderfolgenden Registern (00100000 und 0100001) landen.

    Bleibt natürlich noch ein Problem: Das Decode-Mode-Register (0x01): Da steht beim Einschalten ´ne &b00000000 drin - also "no decode for digits 3-0".
    Damit die Digits 0 und 1 angesteuert werden, muss da &b00000011 reingeschrieben werden. Dieses Register steht aber an einer ganz anderen Stelle als die anderen zu beschreibenden Register, so dass man das nicht unmittelbar hintereinander weg per automatischem Increment machen kann.

    Ich würde also mal versuchen, zuerst das data decode register zu beschreiben, und dann in einem zweiten Teil die eigentlichen Ziffern in die Digit-Register:

    I2cstart
    I2cwbyte &b01110000
    I2cwbyte &b00000001 (Adresse des Data Decode Registers)
    I2cwbyte &b00000011 (=Digits 0 und 1)
    I2cstop

    I2cstart
    I2cwbyte &b01110000
    I2cwbyte &b00010000 (= 0x20, Adresse Digit 0)
    I2cwbyte Einer
    I2cwbyte Zehner (geht automatisch ins Register 0x21)
    I2cstop

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31
    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.

  3. #3
    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.

  4. #4
    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.

  5. #5
    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 22:56 Uhr)

Ähnliche Themen

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

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests