- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 3 von 3

Thema: PICs als I2C Master und Slave in C mit CCS-compiler

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    PICs als I2C Master und Slave in C mit CCS-compiler

    Hallo,

    ich möchte einen PIC als I2C Master betreiben und einen weiteren als I2C Slave.
    Das ganze in C mit dem CCS Compiler. (In Assembler habe ich schon einige Beispiele gefunden, welche mir aber nichts nutzen, da ich es in C brauche!)
    Das Beschreiben (Nachrichten schicken) des Slaves-Pics klappt inzwischen, aber das Lesen vom Slave stellt noch ein Problem dar.
    Ich bin kein Programmierprofi und bräuchte einfach ein Programm oder ein Tip für den Slave, welcher dann fähig sein sollte, zwischen lesen und schreiben unterscheiden zu können. Er soll dann eine Nachricht zurück an den Master schicken.

    Für das Lesen vom Slave durch Master:
    Brauche ich beim Master unbedingt ein "restart" wie im Folgenden oder kann ich nicht gleich nach dem ersten Start meine Slave Adresse mit gesetztem read Bit ('1') schreiben?

    i2c_start();
    i2c_write(0xa0); //Device address
    i2c_write(address); //Data to device
    i2c_start(); // Restart
    i2c_write(0xa1); // to change data direction
    data=i2c_read(0); // now read from slave
    i2c_stop();

    Im Voraus vielen Dank.

    Gruß Andi

  2. #2
    Gast
    Hallo,

    start ist nicht gleich restart.
    Ich würde vorschlagen, dass du nach
    i2c_write(address); //Data to device
    erst ein stop sendest und dann wieder ein start.
    Also so:
    i2c_start();
    i2c_write(0xa0); //Device address
    i2c_write(address); //Data to device
    i2c_stop();
    i2c_start(); // Restart
    i2c_write(0xa1); // to change data direction
    data=i2c_read(0); // now read from slave
    i2c_stop();

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Ein RESTART ist ein START ohne vorheriges STOP.
    Falls nur 1 Master am Bus ist, geht beides.
    Falls aber mehrere Master am Bus sind, kann ein anderer Master den Bus übernommen haben. Dann gibt es Fehler, weil 'address' aus dem dammy-write nicht so ist, wie einem dünkt.

    @andi619:
    Ja, das RESTART brauchst du.

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad