mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SAA1064 -- I2C Probleme


Autor: Alexander U. (alexander_u)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich habe ein kleines Problem mit der Ansteuerung von 4 7-Segmentanzeigen 
mittels eines SAA1064 Treibers.
    
    i2c_start();              
    i2c_write(0x70);
    i2c_write(0x00);
    i2c_write(0b10010111);

    i2c_write(0b00000110);
    i2c_write(0b01011011);
    i2c_write(0b01001111);
    i2c_write(0b01100110);
       
    i2c_stop();


Die Anzeige soll testweise 1-2-3-4 anzeigen. Allerdings wird nur die 
erste Stelle angezeigt, dir anderen bleiben dunkel. Wenn ich das 
Test-bit 1 setze, leuchten aber alle Digits.

Als Mikrocontroller verwende ich einen PIC18F4550. Als 
Programmiersprache C (MPLAB + CCS).

Weiss jemand wo der Fehler liegen kann?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
    i2c_start();              
    i2c_write(0x70); // Adresse WRITE des SAA1064
    i2c_write(0x00); // Subadressing Start mit 0

    // Subadressing 0 => Daten für Control Register
    // C7 C6 C5 C4 C3 C2 C1 C0
    // 1  0  0  1  0  1  1  1
    // +---> don't care   
    //    +--> keine +12mA
    //       +--> keine +6mA
    //          +--> +3mA
    //             +--> no test mode
    //                +--> Digits 2/4 not blanked
    //                   +--> Digits 1/3 not blanked
    //                      +--> dynamic mode
    i2c_write(0b10010111);

    // (Subadressing autoincrement) => Daten für Digits
    i2c_write(0b00000110); // Digit 1
    i2c_write(0b01011011); // Digit 2
    i2c_write(0b01001111); // Digit 3
    i2c_write(0b01100110); // Digit 4
       
    i2c_stop();

Code sieht richtig aus.

Ich würde die externe Beschaltung des ICs prüfen, ob das Multiplex 
arbeiten kann (Stichwort C_EXT). Der Code oben verlässt sich darauf 
(dynamic Mode).

Autor: Dieter S. (dolivo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich programmiere zwar in BASCOM, aber das spielt hier wohl keine Rolle. 
Mein Code für die Ansteuerung sieht genauso aus (nur Bit7 des control 
bytes ist bei mir 0, was aber lt. Datenblatt egal ist). Deswegen tippe 
ich auch auf einen Hardwarefehler.

Autor: Alexander U. (alexander_u)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
War in der tat ein Hardwarefehler.
Da ich die Platine an einigen Stellen wegen Fehler provisorisch 
ausgebessert hatte, lag plötzlich ein Pull-up Widerstand nicht mehr auf 
+5V. Grade die Beschaltung des SAA1064 überprüft, Fehler festgestellt, 
behoben, funktioniert jetzt tip top :D.

Danke euch,

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.