-
        

Ergebnis 1 bis 6 von 6

Thema: Probleme bei I2C Ansteuerung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    31

    Probleme bei I2C Ansteuerung

    Anzeige

    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:


    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

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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 ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    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.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    31
    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

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    31
    Nein, an der Stromversorgung liegt es nicht. Die ist OK.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •