-
Adresse bei I2C Bus
Hallo
Ich habe eine Frage, wie muss ich die Adresse des Ic's welche lautet &H74 bei der Bibliothek von fleury i2cmaster.h bei i2c_start (unsigned char addr) eingeben und was bedeudet das +I2C_WRITE in dieser Funktion
Bitte um rasche Antwort
Danke im voraus
-
Am besten erst nen Namen vergeben, falls sich die Adresse mal ändert, und damit man sie sich besser merken kann:
#define adresse 0x74
Und dann
i2c_start(adresse+I2C_WRITE);
Das I2C_WRITE bzw. I2C_READ wählt aus, ob du den Slave auslesen oder beschreiben willst.
(Hintergrund für die Schreibweise als Addition zur Adresse: Bei I2C haben die eigentlichen Adressen nur seiben Bit. Das achte Bit bestimmt die Richtung der folgenden Datenübertragung. Es wird vom Master direkt nach der Startbedingung also ein Byte gesendet, die seiben Bit Adresse plus ein Bit Richtung. Daher werden nun die beiden Komponenten zusammengerechnet, um das vollständige Byte zu bilden. In der ic2master.h ist I2C_WRITE als 0 bzw. I2C_READ als 1 definiert.
)
-
Hallo
Danke
Noch ein Problem wie gebe ich die Ports für Sda und Scl bekannt
Meine Ports sind Port C0 =Scl Port C1 =Sda
Kannst du mir das bitte noch schreiben
-
Was für ein AVR-Typ? Sind die Pins in der Pinbelegung im Datenblatt als SCL/SDA gekennzeichnet (z.B. Mega16/32)? Dann brauchst du die Pins nicht mehr extra angeben. In diesem Fall verwendest du die Dateien ic2master.h und twimaster.c.
ic2master.S darf dann nicht im selben Ordner liegen.
-
Hallo
Ich habe den Atmega 32
-
also ic2master.h und twimaster.c verwenden, die Pinbelegungen sind dann schon richtig eingetragen.
-
Hallo
Danke das mit dem I2C Bus funktioniert jetzt schon einmal
aber jetzt habe ich ein Problem mit dem schicken der Adresse an den Pcf 8574AP
Ich möchte das Port 0-2 und 5-7 aktiv sind
wie muss ich da die Adresse schicken
-
Hallo
Du mußt einfach die entsprechenden bits auf 0 oder 1 setzen.
Du liest das Byte ein,manipulierst die gewünschten Bits und schreibst das Byte.
Mit freundlichen Grüßen
Benno
-
Hallo
und wie muss ich das machen
Ich bin Anfänger und kenn mich leider nicht so gut aus
könntest du bitte ein kurzes Beispiel schreiben
-
Hallo
bit 0 und 1 sollen auf null gesetzt werden,der Rest bleibt:
lese byte
and 1111 1100b
schreibe byte
zum setzen: or 0000 0011b
Mit freundlichen Grüßen
Benno