www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Master Slave mit I2C


Autor: Fichte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hay @all

Ich habe eine Frage kann ich den einen Atmel als Master und einen als
Slave über den I2C Ansteuern. Ich nutze als Compiler Codevision.


Wenn ihr jetzt Sagt nimm doch die TX/RX Leitung das geht leiter nicht
die ist schon belegt.


MFG: Fichte

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst.

Was Du genau an Software dafür brauchst, hängt allerdings von Deiner
Hardware ab.  Wenn Du Hardware-TWI hast, geht's nicht allzu schwer.
Ob es auch Software I²C Clients als Beispiellösungen gibt, weiß ich
nicht -- die meisten Software I²C Beispiele konzentrieren sich wohl
auf den master mode.

Autor: Fichte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe 2 Atmega16 und die haben TWI Aber wie Spreche ich die nun an
bzw. wie sende oder schreibe ich daten in den anderen und wie lese ich
sie aus.???


MFG: Fichte

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So wie im Datenblatt unter TWI beschrieben.

Autor: Axel Rühl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tolle Antwort... im datenblatt ab Seite 170. Wissen wir alle!
hat schon mal jemand die Hardware TWI umgesetzt? die softwareroutinen
sind ja hinlänglich bekannt.
Ich mache ja mit Basic /FastAVR rum, da war das ganz schön aufwändig.
Im prinzip kommt der TWI-Interrupt bei "jedem Sch...", also immer,
wenn was auf'm TWI passiert. was genau passiert, steht im TWSR. Jetzt
muss man schauen, was da drinne steht, und entsprechend verzweigen.
Wenn Du den Atmel als Slave hast, wirst du erstmal 'ne 0x60 bekommen,
wenn der Master ihn auf seiner Slaveadresse erwischt hat, dann fliegen
die Daten ein: du bekommst eine 0x80. hier legst du jedes Byte (steht
im TWDR)in einem Puffer ab, und setzt das TWEA-Bit im TWCR- Register,
ist dein Puffer voll setzt du es nicht, du generierst somit das
Acknowletsch gg aufm 9.Bit oder eben nicht. Wenn Stop kommt, bekommst
Du ein 0xA0. Dann weisst du, dass du alle Daten hast. Ich verzweige
hier an dieser stelle zu meiner Empangsroutine. wo ich den Puffer leere
und meinen Variablen zuordne. Immer wenn ich fertig bin, und erst dann,
setze ich das TWINT-Bit. solange zieht sonst der Slave die TWI-Leitung
gegen Masse, damit der Master wartet. die anderen Bit's muss man auch
jedesmal setzen TWEN, TWEA(0der eben nicht),TWIE. Wenn ein Fehler auf
dem Buss passiert, bekommt man als Status 0x00. hier macht man
garnichts, sondern setzt zusätzlich noch das TWSTO-bit im TWCR.

Wie man als Master Daten absetzt, schreibt bitte jemand anders.

Ich würde es gut finden, wenn solche Kommentare, wie "steht im
Datenblatt" in Zukunft unterbleiben. Dann schreibt lieber garnichts!

Gruß
AxelR.

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Axel:

Kleiner Tip: Jörg Wunsch hat den Master-Mode schon hinlänglich
beschrieben. Und zwar in der avr-libc für den gcc-Compiler.

Was Jörg hier sicher ausdrücken wollte: für konkrete Fragen bekommst Du
eine konkrete Antwort. Aber wenn aus der Frage hervorgeht, dass man
sich selber noch sehr wenig mit dem Grundproblem beschäftigt hat, dann
ist der Verweis auf Literatur schon gerechtfertigt.

Stefan

Autor: Axel Rühl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan
schon recht. auch ich habe mich speziell an die TWI geschichte erst ran
gemacht, als ich einen Schupser bekam. Vielleicht war das ja der
schupser...
Etwas mehr selber denken, macht sinn. Wenn man erst mal einen Einstieg
hat, sollte das gut funktionieren. Das wir sowas können, zeigt die
Teilnahme an diesem Forum, sonst würden wir den ganzen Tag mit'm Bier
am Kiosk abhängen.

Gruß auch an Helge
AxelR.

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grübel grübel ... Helge?? Kenne ich Dich aus Ulm??

Stefan

Autor: Axel Rühl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan
nee, wir haben hier in Potsdam einen aktiven User, der gerne unter
"Helge" postet.
Gruß trotzdem
AxelR.

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.