Forum: Mikrocontroller und Digitale Elektronik I2C Bus - Grundlagen Frage


von Max B. (maxberg)


Lesenswert?

Hi!

Ich weiß, dass es schon 100erte Artikel über den I2C bus gibt aber 
trotzdem hab ich eine frage...

Ich möchte mehrere PIC über einen MasterPIC ansprechen...

(das heist an einem "großen" PIC hängen viele "kleine")

Jetzt schickt ja der Master eine Adresse voraus um damit die slaves 
anzusprechen...
Meine Frage jetzt:
Holt sich der Master aktiv die Daten vom Slave, oder sagt der Master 
nur: DU darfst jetzt senden.. (das heißt ich muss im slave 
implementieren, dass er dann sendet)

Danke für eure Hilfe! (aja mal ein Lob an das Forum, da wurden bei mir 
schon einige Probleme gelößt =) )

Liebe Grüße Max =)

von David P. (chavotronic)


Lesenswert?

Nochmal richtig lesen ;)
Der Master darf eine Verbindung starten, die Slaves nicht.
Er holt sich also nicht die Daten aktiv sondern "Hey alter schick mir ma 
deine Daten raus", was der Sklave daraufhin auch tut.

von Klaus (Gast)


Lesenswert?

Nicht "der Master darf die Verbindung starten",  sondern derjenige der 
die Verbindung startet, ist der Master. Also der Teilnehmer, der die 
Startbedingung gesendet hat. Keine Ahnung, was du mit "aktiv holen" 
meinst, aber das Taktsignal wird immer vom Master erzeugt. Unabhängig 
von der Datenrichtung.  Wenn dein Master also ein SLAR (Slaveadresse + 
Datenrichtung: lesen) sendet, muss der Slave nur seine Daten auf die 
Datenleitung legen.

Wenn der Master nun meint, er hätte genug Daten gelesen, muss er (und 
niemand sonst) die Stopbedingung senden.

von Michael A. (micha54)


Lesenswert?

Hallo,

ich glaube, Max meint folgendes:
1) der Master muss eine Leseverbindung starten
2) darf der Slave dann alles senden was er loswerden will/muss oder gibt 
es ein festgelegtes Protokoll ?

Ich sehe da keine Festlegung ausser der, daß jeder Slave ein Protokoll 
implementiert, also z.B. definiert ein Eeprom, wie auf Read-Anfragen 
geantwortet wird.

Eine Tastatur z.B. wird auf en Read einfach jedes Zeichen senden, es 
könnte aber auch festgelegt sein, daß der Master ein "Gib Zeichen" 
vorausschicken muss, um ein Fifo abzufragen, zB. im Gegensatz zu "Gib 
gedrückte Tasten" als Status
der Tasten.

Gruß,
Michael

von hans (Gast)


Lesenswert?

Grundlage Antwort:

http://www.roboternetz.de/wissen/index.php/I2C


Ein IC generiert einen Start und wird Master.
Der Master adressiert seinen Gesprächspartner/Slave und sagt ihm
ob er lesen oder schreiben will.
Die folgenden Daten kommen dann vom Master oder Slave, das Clock immer
vom Master, das Ack immer vom Empfänger.
Der Master beendet die Übertragung mit einem Stop und beim Empfangen
durch weglassen des Ack.

Es gibt noch ein paar Sonderfälle wie Ack-Verzögerung, Bus-Belegt etc.

gruß hans

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.