SAA1064 -- I2C Probleme

OP #1988250
Lesenswert?

Hi,

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

7
    i2c_write(0b00000110);
8
    i2c_write(0b01011011);
9
    i2c_write(0b01001111);
10
    i2c_write(0b01100110);
11
       
12
    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?
Persönliche Seite #1988399
Lesenswert?

1
    i2c_start();              
2
    i2c_write(0x70); // Adresse WRITE des SAA1064
3
    i2c_write(0x00); // Subadressing Start mit 0
4

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

18
    // (Subadressing autoincrement) => Daten für Digits
19
    i2c_write(0b00000110); // Digit 1
20
    i2c_write(0b01011011); // Digit 2
21
    i2c_write(0b01001111); // Digit 3
22
    i2c_write(0b01100110); // Digit 4
23
       
24
    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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren