PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme bei I2C Ansteuerung



infosystems
25.06.2006, 06:29
Hallo Jungs,

ich habe da ein großes Problem und kommen nicht weiter.

Die Schaltung ist wie folgt: ATMega16, danach über I2C an den PCF 8574, von da an den Treiber ULN2003, Widerstand, LED und an V+.

Ich schaffe es nicht die LED dauernd anzusteuern.

Je mehr PCF 8574's ich ansteure, um so kleiner wird die Helligkeit der LED Anzeigen.

Was ist da bloß zu machen?
In meinem Programm werden die LEDs, nacheinander angesteuert, dadurch die Helligkeit Abnahme. Leider fällt mir nichts ein, wie ich eine Dauer Ansteuerung mit dieser Beschaltung schaffen könnte...

Habt Ihr da eine Idee???

Hier mein Programm Code:



regfile = "m16def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 7372800
$baud = 9600
Const Dekaden = 5 ' Anzahl der Anzeigen (dekaden)
Const Pulsdauer = 10000 ' Dauer eines Impulses




'Variablen 7 Segment Dekodierung
Dim Segment(dekaden) As Byte
Dim Zahl(dekaden) As Byte ' Array für die fertig berecheten Segmente
Dim Digit As Byte
Dim Adress As Integer


Config 1wire = Portd.6 ' Eingang Temperatur Sensor


'LED's in den Gradzeichen setzen
Config Porta = Output
Config Portb = Output

Porta.4 = 1 ' Led im Gradzeichen oben
Porta.3 = 1 ' Led im Gradzeichen unten
Portb.2 = 0 ' INT Eingang des PCF8574

'i2C Konfigurieren

Config Scl = Portc.0 ' Ports fuer I2C-Bus
Config Sda = Portc.1
I2cinit



'Slave adressen des PCF 8574 I/O IC
Const Adr_digit1 = &B1001110 ' Adresse Stelle 1
Const Adr_digit2 = &B1001100 ' &B1001110
Const Adr_digit3 = &B1001010 ' |||
Const Adr_digit4 = &B1001000 ' ||A0
' |A1
' A2



'Daten über I2C an die Anzeigen senden
Do
I2csend Adr_digit1 , &B01111111
I2csend Adr_digit2 , &B01111111
I2csend Adr_digit3 , &B01111111
I2csend Adr_digit4 , &B01111111
Loop




Vielen Dank und ein schönes Wochenende.

Gruß

Rici

PicNick
25.06.2006, 08:42
mhhh. Was mir nicht klar ist:
Der PCF 8574 geht für 7.. Adressen und für 4.. Adressen. (denk' ich lt. Datenblatt)
Du hast adressen 9.. ?
Wieso geht das überhaupt ?

linux_80
25.06.2006, 11:56
Hallo,
@PicNick
er hat nur 7 bit angegeben, deshalb kommt man in der 4x Adressbereich.

@infosystems
Du steuerst also die LEDs an wenn das Bit auf 0 ist, evtl. sollte man das umdrehen, denn der ULN kann doch 500mA liefern, und nicht vernichten, oder täusche ich mich da.

infosystems
26.06.2006, 17:32
Hallo Jungs,

das mit der Ansteuerung klappt eigentlich. Bei 1 am Ausgang des ATMega16 leuchten die LED's.

So lange ich nur ein PCF 8574 anspreche ist alles OK.
Jedes Digit der Anzeige liegt an einem PCF8574. sobald ich in der Do Loop Schleife ein weiteres Digit anspreche geht die Helligkeit der Anzeige zurück.

Darf doch irgendwie nicht sein.

Eigentlich kann man über I2C Bus 32 Teilnehmer betreiben. Soll das heißen das bei 32 Teilnehmer die LED's nun 1/32 Teil der Zeit leuchten???

Da muss ein gravierender Fehler in meinem Programm sein.

Ich packe das irgendwie falsch an. Das PCF8574 hat doch Latched Ausgänge, was heißt das eigentlich genau??

Wer hat da eine bessere Idee??

Viele Grüße

Richard

PicNick
26.06.2006, 17:51
Ehrlich gesagt, mir klingt das so, als würde die Stromversorgung einbrechen. Jedes Led verbraucht mehr Saft.
"Latched" heißt einfach, er merkt sich's.

infosystems
28.06.2006, 06:31
Nein, an der Stromversorgung liegt es nicht. Die ist OK.