- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
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
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31

    MAX6958 - 7-Segment-Anzeigen leuchten nicht

    Guten Abend zusammen,

    ich wage mich jetzt mal an Sieben Segment Anzeigen heran.
    Ansteuern möchte ich die mit einem ATMega88 und einem MAX6958.
    An den SCL und SDA kommen die richtigen Werte heraus. (Angezeigt mit Oszi).
    Aber der Anzeigentreiber gibt kein Signal aus.

    Was mach ich falsch?

    Als Adresse hab ich aus dem Datenblatt folgende Information:

    Code:
    Slave Address
    The MAX6958/MAX6959 have a 7-bit-long slave
    address (Figure 3). The eighth bit following the 7-bit
    slave address is the R/W bit. Set the R/W bit low for a
    write command and high for a read command.
    The MAX6958/MAX6959 are available in one of two
    possible slave addresses (see Table 2 and Ordering
    Information). The first 6 bits (MSBs) of the MAX6958/
    MAX6959 slave address are always 011100. Slave
    address bit A0 is internally hardwired to either GND in
    the MAX695_A_, or V+ in the MAX695_B_. A maximum
    of two MAX6958/MAX6959 devices can share a bus.
    
    Message Format for Writing
    A write to the MAX6958/MAX6959 comprises the trans-
    mission of the MAX6958/MAX6959s ’slave address with 
    the R/W bit set to zero, followed by at least 1 byte of
    information. The first byte of information is the com-
    mand byte, which determines the register that stores
    the next byte written to the MAX6958/MAX6959. If a
    STOP condition is detected after the command byte is
    received, the MAX6958/MAX6959 take no further action
    (Figure 6) beyond storing the command byte.

    hier der Code:

    Code:
    $regfile = "m88def.dat"
    $hwstack = 128
    $framesize = 128
    $swstack = 128
    
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portd.0 , _
           Db7 = Portd.1 , E = Portb.4 , Rs = Portb.5
    Config Lcd = 16 * 2
    Cursor Off
    
    Config Sda = Portc.4
    Config Scl = Portc.5
    
    Const Ad = &B011100
    
    Dim X As Byte
    
    X = 0
    
    Do
    
      For X = 0 To 65
    
          Upperline : Lcd "     Os Ram     "
          Lowerline : Lcd "       " ; X ; "        "
    
          I2cstart
          I2cwbyte Ad
          I2cwbyte X
          I2cstop
    
          Waitms 1000
      Next X
    
    Loop
    
    End

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    So wie es aussieht, reagiert der MAX6958 auf ein Kommando mit 8 Bits. Die ersten 6 Bits sind in der Tat 011100.
    Danach kommt aber noch ein siebtes Adress-Bit, das beim MAX6958A 0 ist, und beim Typ B 1. Das ist dafür gut, wenn man zwei ICs mit dem selben Bus bedienen und einzeln ansprechen möchte. Und schließlich kommt das Read-write-Bit, das dem IC sagt, ob es Daten empfangen oder senden soll. In Deinem Fall soll es Daten empfangen, also muss dieses letzte Bit 0 sein.

    Versuch´s also mal mit Const Ad = 01110000 (MAX6958A) bzw. 01110010 (MAX6958B)!

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    ...und im Datenblatt steht nochwas wichtiges:

    Nach dem korrekten Adressieren muss als erstes ein Kommando-Byte gesendet werden, damit der MAX überhaupt weiß, was er tun soll. Denn man kann ihm eine Menge anderer Befehle geben als einfach nur das Anzeigen von irgendwelchen Ziffern.

    Wie ich das verstanden habe, ist das Kommando für den "decode"-Modus die Bitfolge 00000001. Die sagt dem IC, dass das nächste gesendete Byte (= Datenbyte) auf der 7-Segment-Anzeige dargestellt werden soll. Da sich mit einem einzelnen Digit nur 16 Zeichen darstellen lassen (0-9 und A-F), werden auch nur die niedrigsten 4 Bits des Datenbytes ausgewertet. Soweit klingt das Datenblatt ganz schlüssig.

    Du brauchst also mal mindestens drei Bytes: Adressbyte, Kommandobyte und Datenbyte, die komplette Sequenz müsste etwa so aussehen:


    I2cstart
    I2cwbyte Ad
    I2cwbyte &b00000001
    I2cwbyte X
    I2cstop

    Wenn X 16 ist, müsste die Anzeige wieder bei 0 anfangen hochzuzählen.

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.693
    ... nur die niedrigsten 4 Bits des Datenbytes ausgewertet ... I2cwbyte X ... Wenn X 16 ... wieder bei 0 anfangen hochzuzählen.
    Irgendwie verstehe ich das anders: bei I2cwbyte X mit X = 15dez sieht (m)ein Byte so aus 0b00001111, bei x = 6dez genauso trivial 0b00000110. Mit X = 16 dann 0b00010000, damit stimmt die Aussage, die stimmt aber auch für X = 48dez => 0b00110000, kurz - wenn I2cwbyte ein unsigned integer ist - für alle Zahlen über 16, bei denen die letzten vier Bits 0 sind, allgemein bei allen Werten bei denen die letzten vier Bits 0 sind. Mag pingelig klingen.
    Ciao sagt der JoeamBerg

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    @ Oberallgeier:

    Vielleicht meinen wir ja das gleiche - ich habe mich auf diese Passage aus dem Datenblatt zum "Decode Mode Register" bezogen:

    In hexadecimal code-decode mode, the decoder looks
    only at the lower nibble of the data in the digit register
    (D3–D0), disregarding bits D7–D4.

    Leider habe ich gerade keinen MAX6958 da, sonst würde ich glatt mal ein wenig damit rumspielen

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31
    Vielen Dank für Eure Antworten.

    Das war ein guter Tipp mit dem Kommandobyte. Das probiert ich heute Abend mal aus.
    Ich hab an dem Treiber zwei Anzeigen dran, da ich Werte von 0 bis ca. 65 anzeigen lassen will. (Geschwindigkeitsanzeige für ne fahrende Bierkiste)
    Muss ich dann den Dezimalwert auch noch in Hex oder Bit umrechnen lassen oder muss ich jede Stelle der zweistelligen Dezimalzahl dann getrennt auf die
    jeweiligen Digits ausgeben lassen?

    The decode-mode register sets hexadecimal code
    (0–9, A–F) or no-decode operation for each digit. Each
    bit in the register corresponds to one digit.
    Ich lese das so, dass ich wenn ich die hexadezimale Ausgabe haben möchte, dieses Register setzen muss.
    Ich glaube, ich probier auch mal &b00000000 aus für "keine Änderung am Standard.
    Heute Abend gibt's mehr.

    Gruß Udo
    Geändert von therealosram (13.11.2014 um 15:07 Uhr)

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

  8. #8
    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)

  9. #9
    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)

  10. #10
    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)

Seite 1 von 2 12 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
  •  

fchao-Sinus-Wechselrichter AliExpress