PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme beim Multiplexbetrieb eines SAA1064



charlenni
13.04.2010, 14:44
Hallo,

ich habe eine Schaltung mit einem SAA1064 aufgebaut. Bisher hat im statischen Betrieb auch alles geklappt. Die zwei verbauten 7 Segmentanzeigen werden auch ohne Probleme angesteuert und zeigen Zahlenwerte an.

Wenn ich jetzt in den dynamischen Betrieb wechsle, um 4 7 Segemntanzeigen anzusteuern geht nichts mehr Die Anzeigen bleiben dunkel, selbst wenn ich die Anoden direkt mit der Versorgungsspannung verbinde (also nicht wie im Schaltplan über Transistoren, dann sollten sie doch wenigstens flackern). Für den Kondensator an Cext (angegeben mit 2n7) habe ich schon 2n2, 47n und 100u eingesetzt. Nichts bringt die Anzeige zum Leuchten.

Schalte ich im Programm wieder auf statisch um, leuchten die Anzeigen ganz normal.

Ich bedanke mich schon im voraus für jede Hilfe.

Viele Grüße
Dirk

BASTIUniversal
13.04.2010, 16:33
Hi!
Bitte poste deine Schaltung und dein (vollständiges) Programm.

Gruß
Basti

charlenni
13.04.2010, 18:30
Danke für die schnelle Antwort.

Die Schaltung habe ich aus dem Datenblatt des SAA1064 (http://www.nxp.com/documents/data_sheet/SAA1064_CNV.pdf, Seite 12). Diese habe ich mittlerweile so abgeändert, dass ich die Anoden direkt mit Vcc verbunden habe, um den Multiplexer zu umgehen. Auf dem Kondensator für Cext steht "222".

Der Programmcode für meinen Arduino Duamilanove lautet wie folgt


#include <Wire.h>
#include <util.h>

const byte BRIGHT_LOW =0x10;
const byte MULTIPLEX =0x07;
const byte TEST_ALL =0x08;

const int numbers[16] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F ,0x77,0x7C,0x39,0x5E,0x79,0x71};

void setup() {

Wire.begin();

// Test der Anzeigen im statischen Modus
Wire.beginTransmission(0x70 >> 1);
Wire.send(0);
Wire.send(BRIGHT_LOW & ~MULTIPLEX | TEST_ALL);
Wire.endTransmission();
delay (1000);
// Löschen der Anzeigen
Wire.beginTransmission(0x70 >> 1);
Wire.send(0);
Wire.send(BRIGHT_LOW & ~MULTIPLEX);
Wire.endTransmission();
}

void loop() {
// Anzeigen der Zahlen von 1000 bis 9999 fuer jeweils 1000 ms
for (int i = 1000; i < 10000; i++) {
Wire.beginTransmission(0x70 >> 1);
Wire.send(1);
Wire.send(numbers[i%10]);
int num = i/10;
Wire.send(numbers[num%10]);
num = i/10;
Wire.send(numbers[num%10]);
num = i/10;
Wire.send(numbers[num%10]);
Wire.endTransmission();
delay (1000);
}
}


Wenn ich nun aus der Zeile "Wire.send(BRIGHT_LOW & ~MULTIPLEX);" in der Funktion "Setup()" die Zeile "Wire.send(BRIGHT_LOW & MULTIPLEX);" mache, dann funktioniert nichts mehr. Es wird nichts angezeigt. Mache ich es wieder rückgängig, dann werden die Zahlen von 00 bis 99 ganz normal angezeigt.

Einen Tipp?