www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik avr spi oder twi?


Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nabend, und zwar möchte ich 2 atmegas miteinander vernetzen, und hab mal
in das datenblatt geschaut was es denn da für möglichkeiten gibt nun bin
ich auf spi und twi gestoßen, nun weis ich nicht so wirklich welche
übertragungsart ich denn nehmen soll?, ich tendiere eher zu twi weil
man da nur 2 leitungen benötigt, habe ich das richtig verstanden das
ich bei  twi nur den rx und tx pin benötige?

Autor: Ralf B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man könnte z.B. auch die USART verwenden ....

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RX und TX ist aber UART.

TWI wird landläufig auch I²C genannt und nutzt die Leitungen SCL und
SDA.

Im Datenblatt des jeweiligen ATmegas sind die Schnittstellen aber recht
ausführlich erklärt.

...

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm usart ist ausgeschlossen, da ich vorhabe mobile messstationen zu
bauen, die mit dem atmega8l bei 1mhz mit 3 v laufen, die messstation
speichert die messwerte im eeprom und ich habe vor die daten per twi
oder spi auszulesen

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für Atmegas genau?
Welche Übertragungsraten?
Wenn du diese 2 Fragen beantwortest, kann man dir sogar ganz konkrete
Vorschläge machen.Den möglich ist alles

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah grade war dein beitrag noch nicht da, ok sry hatte die SDA und SCL
auf der pinbelegung übersehen, danke ich denke nun komme ich klar

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was für Atmegas genau?

Naja, er nennt sie wenigstens schonmal "ATmegas" und nicht einfach
nur "Atmels"...

8-D

...

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noch ne kleine frage, wie muss ich das anschließen? SDA vom master an
SDA vom slave und mit SCL da gleiche?

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich benutz nen atmega8l

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht sehr ausführlich im Datenblatt. Und vergiss die PullUps nicht.

...

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geschwindigkeit der übertragung muss nicht sehr hoch sein, es sollen nur
ein paar messwerte aus dem eeprom übertragen werden

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde es per SPI machen. Das ist aber subjektiv, da ich mit TWI noch
nicht so vertraut bin.

...

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
reicht es wenn ich die internen pullups einschalte? oder muss ich
externe widerstände benutzen?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lies endlich mal das Datenblatt und besser noch die I²C-Spezifikation!

...

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich schliess mich Hannes an: SPI!

Autor: Ingo H. (putzlowitsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Von mir aus schlagt mich, aber hier haben wir ein schönes Beispiel,
warum es eben mit Groß-/Kleinschreibung und ordentlicher
Rechtschreibung nicht so ganz egal ist:

"... die mit dem atmega8l bei 1mhz mit 3 v laufen, die ..."

Der brandneue ATmega81 mit einem Millihertz?
Oder doch nur ein normaler ATmega8L bei 1 MHz :-)

Egal, ist vielleicht auch schon etwas spät.

Gute Nacht und Gruß
Ingo

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm.... war noch nie ein rechtschreib profi ;)
sry aber hab mir das unordentliche schreiben irgendwie im net so
angewöhnt, kommt vllt. auch vom schnellschreiben ... ^^

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ingo, du hast recht, aber wir sind inzwischen in der Minderheit.
Halbwegs korrekte Rechtschreibung wird von der Mehrheit inzwischen als
spießig empfunden.

...

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde auch SPI nehmen. I²C konnte ich noch nie leiden. (Hab mich da
nie so weit reingelesen. Die ganze sache mit ACK/NACK/START/STOP ist
wirr!)

Autor: Kai Markus Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ingo & Hannes

<OT>
Vielen Dank, dass das mal jemand anspricht. Ich finde es manchmal
recht anstrengend, Threads zu lesen, die einen inhaltlich
interessieren,
abersoganzohnepunktundkommaunddannauchnochalleskleinundohneabsatz
geschrieben sind. Wobei ich jetzt Christian nicht an den Pranger
stellen möchte; da gibt es weitaus schlimmere Beispiele.

Schließlich hat man alle 102 Tasten von seiner Tastatur
teuer bezahlt, und da finde ich, sollte man sie auch nutzen.
Insbesondere die SHIFT-Taste :)

Und ein Absatz hier und da erhöht das Datenvolumen nur unerheblich,
steigert aber die Lesbarkeit enorm.
</OT>

Aber nun back to topic: Christian, es kommt darauf an, wie weit Deine
Messstationen auseinanderliegen. I2C ist eigentlich nicht dazu
gedacht, weit entfernte Platinen miteinander zu vernetzen. Dafür
ist das System per definitionem einfach zu störanfällig.

Wenn mehrere zig Meter überbrückt werden sollen, wäre schon - je
nach Grad der Verseuchung der Umgebung - eine UART-Anbindung
nach RS-422 mit symmetrischer Leitungsführung angesagt.

Fazit:

- für kurze Strecken (auf einer Platine) SPI oder TWI (=I2C)
- für mittlere Strecken U(S)ART
- für lange Strecken (evtl. auch verseuchte Umgebung): RS-422

In diesem Sinne
kmt

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kai Markus, verschreiben tut sich Jeder mal, das ist nicht das Thema, es
geht um das bewusste konsequente Ignorieren der allgemeingültigen
Regeln. Das ist leider so verbreitet, dass man dagegen nicht mehr
ankommt.

Zur Sache: Ich nahm an, dass die "mobilen Messstationen":

> da ich vorhabe mobile messstationen zu
> bauen, die mit dem atmega8l bei 1mhz mit 3 v laufen, die messstation
> speichert die messwerte im eeprom und ich habe vor die daten per twi
> oder spi auszulesen

(die mit dem ATmega81 mit 3 Millihertz) "mobil" sind und zum Auslesen
der gesammelten Daten an die Zentrale gebracht werden, wobei nur kurze
Leitungen erforderlich sind.

Von TWI riet ich ab, weil ich das Protokoll bescheuert finde und
annehme, dass Christian damit vorerst überfordert ist (deshalb auch
mein Hinweis, die I²C-Spezifikation zu lesen um das selbst zu
bemerken).

Gute N8...
...

Autor: Kai Markus Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, ok! Soweit war ich mit meinem Gedankengang noch nicht
gekommen. Es könnte natürlich auch sein, dass diese
Messstationen kurzzeitig in eine Datentransferstation gelegt
werden. In diesem Falle würde ich (rein persönlich) auch
SPI bevorzugen. Weil ich das I2C-Protokoll auch ziemlich
behämmert finde und damit - zumindest was Codevision angeht -
auch schon schlechte Erfahrungen gemacht habe.

Kai Markus

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

I2C ist ein echter Bus. Wenn es also nur um eine Verbindung von zwei
Teilnehmern geht ist I2C übertrieben komplex. Da reicht dann SPI oder
aber der UART. Den braucht man ja nicht mit einem RS232 oder RS422
Transmitter zu beschalten wenns klein und simpel werden soll.

Matthias

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so vielen Dank für die ganzen Antworten,

werde nun wohl mein Glück mit SPI versuchen, jedoch ohne UART,
noch etwas zu der mobilen station, sie wird nicht permanent
mit dem Master verbunden sein ich werde einen Anschluss anbringen,
wo ich dann ein "Auslesegerät" für die Daten anschließen kann.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da SPI die gleichen Pins nutzt wie ISP, kannst du das über den
ISP-Anschluss realisieren. Der "mobile Datentransporter"
(Auslesegerät) sollte dann Master sein und dem Datenlogger Befehle
erteilen können. Da wird also noch ein kleines Protokoll (vereinbarter
Befehlssatz) erforderlich werden.

Z.B.:

- Wieviel Datensätze sind vorhanden?
- Schicke n Datensätze
- Lösche alle Datenspeicher
- Setze Uhrzeit

Der Datenlogger sollte eine ständig aktive SPI-Slave-Routine enthalten,
am besten über Interrupt. Mit einem Befehlsparser kann dann in die
entsprechenden Routinen verzweigt werden (eigentlich nur eine
Zustandsvariable setzen, anhand der der SPI-Interrupt weiß, was in den
folgenden Aufrufen zu tun ist).

...

Autor: Manos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entweder habe ich es überlesen oder es ist noch nicht angesprochen
worden...

Wie hast Du vor den EEPROM anzubinden - der interne Speicher ist ja
nicht grade üppig? SPI oder I2C EEPROM?

Seriell würde übrigens auch gehen - wenn es nur darum geht 2 uC
miteinander zu verbinden benötigt man keine Pegelwandlung und kann bei
5 (oder wahrscheinlich auch 3) V bleiben. Dennoch denke ich, dass SPI
wahrscheinlich am sinnvollsten ist.

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.