mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C Bus - Grundlagen Frage


Autor: Max Berg (maxberg)
Datum:

Bewertung
0 lesenswert
nicht 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 =)

Autor: David P. (chavotronic)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Michael Appelt (micha54)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.