- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 39

Thema: I2C Einstieg

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.095
    Welchen Typ hast du genau? Es gibt den PCF8574 und den PCF8574A. Das hier auf Seite 9.
    Die Adresse ist einmal Hex 40 (bzw 41) und einmal Hex 70 (bzw 71).

    MfG Hannes

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    Ich habe den PCF 8574 P von Reichelt.
    Muss ich INT irgendwie verbinden ??

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.095
    Der Int kann unbeschalten bleiben. Dieser ist nur dafür gedacht wenn man den µC signalisieren will das neue Daten anliegen (wenn man einen oder mehrere I/O als Eingang verwendet). Ich kenne mich mit Bascom nicht aus, aber versuche einmal den Gesamten Port zu beschreiben. Eventuell im Sekundentakt die Werte ändern (z.B. gesamten Port 0 und dann 1). MfG Hannes

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    Ich habe den Fehler gefunden
    Es lag daran dass ich die Widerstände an SCL und SDA vergessen hab ( ich habe nicht RN-Control sondern mein eigenes Board genutzt, welches diese Widerstände nicht hat).
    Jetzt geht es also und summt vor sich hin und blinkt dazu :

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $hwstack = 200
    $swstack = 200
    $framesize = 400
    
    
    Config Portd.7 = Output
    
    
    'TWI konfigurieren
    Config Sda = Portc.1
    Config Scl = Portc.0
    Config Twi = 100000                                         'TWI Frequenz
    
    'Adresse des PCF
    Const Pcf8574w = &H40
    Const Pcf8574r = &H41
    
    
    Sound Portd.7 , 400 , 450
    Sound Portd.7 , 400 , 250
    Sound Portd.7 , 400 , 450
    Wait 1
    
    'I²C initialisieren
    I2cinit
    
    Sound Portd.7 , 400 , 450
    
    Do
    
    I2cstart                                                    'TWI Startkondition
    I2cwbyte Pcf8574w
    I2cwbyte &B00000000
    I2cstop
    
    Sound Portd.7 , 400 , 450
    
    Wait 1
    
    I2cstart                                                    'TWI Startkondition
    I2cwbyte Pcf8574w
    I2cwbyte &B11111111
    I2cstop
    
    Sound Portd.7 , 400 , 450
    
    Wait 1
    
    Loop
    End

    Kann ich, wenn ich neue Prog proggen möchte auch die Kabel und Verbindungen zum PCF dranlassen ??

    Wie soll es jetzt weiter gehen ??

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    17.02.2011
    Beiträge
    11
    Hallo Einsteiger,

    für einen PCF8574 (alle Adressanschlüsse auf low) schaltet man folgendermaßen alle LED´s aus:
    Code:
    I2cstart
    I2cwbyte &B01000000 'Adresse
    I2cwbyte &B11111111 'Daten
    I2cstop
    Zum Einschalten mußt Du statt 1 eine 0 schreiben. Alle LES´s an:

    Code:
    I2cstart
    I2cwbyte &B01000000 'Adresse
    I2cwbyte &B00000000 'Daten
    I2cstop
    Geht natürlich auch gemischt in jeder Kombination.

    Gruß Christian

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    Und wie kann ich einen Eingang auslesen ??

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Hey,

    das machst du einfach mit einem I2crbyte, statt dem I2cwbyte um die Daten zu schreiben.

    Code:
    I2cstart
    I2cwbyte Adresse
    I2crbyte MeineVariable, Nack
    I2cstop
    Das Datenbyte enthält den Status ALLER GPIOs.
    Um den Status von GPIO 0 zu erhalten musst du es maskieren:

    Status = MeineVariable AND &B00000001
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    Ok. Danke

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.024
    So weit ich weiß (=gelesen hatte), muss man diejenigen Bits, die man als Eingang haben will, zuvor auf H setzen, damit sie -weil OpenCollector- auch hochohmig sind. H-Pegel auf L-Ausgang macht sich nicht so gut!

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    H-Pegel auf L-Ausgang macht sich nicht so gut!
    Das stimmt wohl

    So, ich habe jetzt mal mit dem 24C16 weitergemacht. Dieser hat gleich funktioniert. Doch habe ich noch ein paar Fragen (Verständnis) :

    Ist das richtig, dass beim 24C16 Typ die Adressenanschlüsse nicht intern beschaltet sind, sodass ich nur eine Adresse habe und auch nicht ändern kann (so stand es irgendwo)??

    Wie ist der 24C16 genau aufgebaut ?? Damit meine ich wie viele Datenstellen und was passt in jede Stelle ?? Kann ich in eine Stelle auch ein Wort schreiben oder nur eine gewisse länge von Zahlen/Bits ??

    Das ist das Programm :

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    $hwstack = 200
    $swstack = 200
    $framesize = 400
    
    Config Portd.7 = Output
    
    
    'TWI konfigurieren
    Config Sda = Portc.1
    Config Scl = Portc.0
    Config Twi = 100000
    
    
    Dim X As Byte
    Dim A As Byte
    Dim B As Byte
    Dim Lesen As Byte
    
    
    Sound Portd.7 , 400 , 450
    Sound Portd.7 , 400 , 250
    Sound Portd.7 , 400 , 450
    Wait 1
    
    
    Do
    '---- schreibe in EEprom ----
    For A = 1 To 10
    Incr X                                                      '1 bis Überlauf zählen
    
    I2cstart                                                    'Start I2C
    I2cwbyte &HA0                                               'Sende Slave Adresse
    I2cwbyte A                                                  'Sende Speicheradresse
    I2cwbyte X                                                  'Sende Wert
    I2cstop                                                     'Stop I2C
    Waitms 10                                                   'warte 10ms
    
    Print "ins EEprom = " ; X ; "  "                            ' Ausgabe der geschriebenen Werte
    Waitms 500
    Next A
    
    
    '--- lesen vom EEprom ----
    For B = 1 To 10
    
    I2cstart                                                    'Start I2C
    I2cwbyte &HA0                                               'sende Slave Adresse
    I2cwbyte B                                                  'sende Speicheradresse
    
    I2cstart                                                    'Start I2C
    I2cwbyte &HA1                                               'sende Slave Adresse +1 für Lesen
    I2crbyte Lesen , Nack                                       'lese Adresse vom EEprom
    I2cstop                                                     'Stop I2C
    
    Print "Lese  EEprom= " ; Lesen ; "  "                       'Ausgabe der EEprom Werte
    Waitms 500
    Next B
    
    Loop
    End
    Wieso muss ich bei der For B = 1 To 10 Schleife erst einmal den I2C Bus öffnen
    Dann das schreiben : (was bedeutet das dann ??)
    I2cstart 'Start I2C
    I2cwbyte &HA0 'sende Slave Adresse
    I2cwbyte B

    Und dann den Bus nicht schließen, aber noch mal öffnen ??:
    I2cstart 'Start I2C
    I2cwbyte &HA1 'sende Slave Adresse +1 für Lesen
    I2crbyte Lesen , Nack 'lese Adresse vom EEprom
    I2cstop

    Und noch eine Frage : Wie kann man das mit den Adressen herausfinden ?? Wie funktioniert das mit dieser Hex Zahl oder der Bin Darstellung ??

    Ich hoffe ihr könnt mir meine ganzen Fragen beantworten ..... Denn wie immer freue ich mich über Antworten sehr
    Der Einsteiger

Ähnliche Themen

  1. Problem mit I2C Sensor DRMOD-I2C-RVI
    Von muerzi im Forum Sensoren / Sensorik
    Antworten: 23
    Letzter Beitrag: 22.02.2010, 19:29
  2. I2C Overview für den Einstieg
    Von Vbxler im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 19.05.2008, 19:30
  3. Problem: Zwei MEGA8 via I2C-Bus koppeln (mit I2C-slave-Lib)
    Von Ulfens im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 11.01.2006, 16:25
  4. *I2C* maximale eingänge per i2c auf 8 digitale Pins
    Von Christian Sturm im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 22.06.2004, 20:44
  5. Grundlegendes zum Einstieg mit I2C / AVR / RN-Control etc.
    Von Trabukh im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 31
    Letzter Beitrag: 20.06.2004, 10:58

Berechtigungen

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

Labornetzteil AliExpress