SAA1064-Probleme

OP #670163
Lesenswert?

Hallo,
ich versuche mich gerade am SAA1064 mit einem Mega16. Da ich keine 
Beispiele in C für diesen Chip im Internet gefunden habe, habe ich ein 
wenig in die BASCOM-Programme geschaut und versucht zu kopieren. 
Außerdem habe ich das Datenblatt des SAA1064 studiert. Auf den 
7-Segmentern wird aber rein gar nichts angezeigt...
Hier der C-Code:
1
#define F_CPU 8000000UL
2

3
#include "i2cmaster.h"
4

5
void main(void){
6
  i2c_init();
7

8
  i2c_start(0x70);  //Adresse 0x70, weil ADR auf Vee liegt
9
  i2c_write(0x00);  //Instructionbyte ist 0xff
10
  i2c_write(0x8F);  //all segment outputs are switched-on for segment test (S.4 Datenblatt)
11
  
12
  i2c_write(0x00);  //Dummies
13
  i2c_write(0x00);
14
  i2c_write(0x00);
15
  i2c_write(0x00);
16
  
17
  i2c_stop();  
18
}
Weiß jemand woran es liegen könnte?
Angehängte Dateien:
#670177
Lesenswert?

Hab hier zwei SAA1064 an nem I2C Bus (USI von nem Tiny2313)
Allerdings keine 7Segment-Anzeigen dran, sondern je 16 Zweifarb-LEDS 
(rot/grün)
Code schaut so aus (aufbauend auf der USI-TWI Appnote von Atmel):
1
 USI_TWI_Master_Initialise();
2
 ...
3

4
  while (1) {
5
...
6
       messageBuf[0]=0x70;
7
        messageBuf[1]=0x00;
8

9
/*          messageBuf[2]=0x27; Mittelhell */
10
          messageBuf[2]=0x37;
11
/*          messageBuf[2]=0x17; Dunkel */
12

13
        messageBuf[3] = current_green.as_array[0];
14
        messageBuf[4] = current_red.as_array[0];
15
        messageBuf[5] = current_green.as_array[1];
16
        messageBuf[6] = current_red.as_array[1];
17

18
        USI_TWI_Start_Transceiver_With_Data(messageBuf,7);
19

20
        messageBuf[0]=0x72;
21

22
        messageBuf[3] = current_green.as_array[2];
23
        messageBuf[4] = current_red.as_array[2];
24
        messageBuf[5] = current_green.as_array[3];
25
        messageBuf[6] = current_red.as_array[3];
26

27

28
        USI_TWI_Start_Transceiver_With_Data(messageBuf,7);
29

30

31
...
32
}

Wobei USI_TWI_Start_Transceiver_With_Data auch nix anderes macht als 
START, 7 Datenbytes, STOP
Gast #670191
Lesenswert?

Hast du schon probiert die letzten vier Bytes nicht zu schicken?
Wenn der Testmodus (habe ihn nie benutzt) lediglich die Bits für die
einzelnen Segmente auf '1' setzt, löscht du sie anschließend wieder.

Ansonsten sieht das Programm gut aus. Du konfigurierst den Chip
für den 'dynamic mode'. Ist der Kondensator Cext drin? Pullups in
den I2C Leitungen? 7-Segmentanzeigen wirklich mit gemeinsamer Anode?
Sorry, aber irgendsowas muß es sein. Der SAA ist recht gutmütig.

 - Michael
OP #670227
Lesenswert?

Hallo,
es waren doch tatsächlich die Pullup-Widerstände. Jetzt habe ich je 
2,7kOhm drin und es läuft. Hatte ich ehrlichgesagt unterschätzt, weil 
ein Forumsmitglied in irgendeinem Beitrag behauptet hatte, dass man 
diese nicht brauchen würde...
Was ich aber grad feststelle ist, dass auf maximaler Helligkeit und 
allen angeschalteten Segmenten die Transistoren und der SAA1064 relativ 
schnell warm werden, naja liegt wohl in der Natur der Sache.

Danke, Sven

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