mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Datenaustausch zwischen 2 AVRs


Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte gern Daten zwischen 2 AVRs tauschen. Einmal einen Mega und
dann ein Tiny. Zur Verfügung stehen mir 2 Datenleitungen am Tiny. Beim
Mega wäre es egal.

Im Prinzip hat eigentlich der Tiny nur Daten an den Mega zu schicken.
Dazu gibt es für mich zwei Möglichkeiten. Entweder wartet der Tiny so
lange bis der Mega bereit ist. Oder die bessere Möglichkeit wäre, wenn
der Mega anfragt und der Tiny dann direkt antwortet.

Gibt es da vorhandene Protokolle, die man nutzen kann? Oder muss ich
mir da was eigenes ausdenken?

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die beste Loesung waere eigentlich wenn du auf deinem Tiny eine RS232 in
Software programmierst. Dann kannst du die an deinen Mega8 anschliessen
und dort laeuft alles im IRQ und du musst nicht warten bis der bereit
ist.

Du kannst dir natuerlich auch irgendwas wildes ausdenken. Aber RS232
hat einen Vorteil. Wenn es mal nicht richtig funktioniert dann haengst
du einfach noch deinen PC mit einem kleinen Pegelkonverter dran und
belauscht deine Schaltung mit einem Terminalprogramm.

Olaf

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Idee ist sehr gut, denke ich. Da wäre ich jetzt nicht von selbst
drauf gekommen. Aber dafür gibt es ja dieses Forum. Also werde ich wohl
mal so eine Steuerung nachprogrammieren. Dann nehme ich für beide
Leitungen RX und TX und damit fertig.

Andererseits wäre natürlich ein Lösung um mehrere Tinys da mit
ranzuhängen und einzeln zu adressieren auch nicht schlecht. Vielleicht
brauche ich das jetzt nicht. Aber vielleicht einfach mal
interessenhalber. Wäre ja dann ein 2-Draht-Bus.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ATTiny26 hat ja ein I2C-Slave Interface, damit kannst Du bis zu 128
Slaves an 2 Drähte hängen.


Peter

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry ich hatte keine genaue Bezcihnung angegeben. Ich gehe jetzt von
einem Tiny oder Interface aus. Mich interessiert z.B. der ATtiny12.

Autor: olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst auch mehre RS232 einfach zusammenhaengen. Ich habe hier in
einem Projekt z.B 3xMega8 and einem 89C52 haengen. Die jeweiligen
EIngaenge kannst du direkt zusammenklemmen und die Ausgaenge jeweils
ueber eine Diode an einen gemeinsamen Widerstand nach Vcc.

Du musst dann nur ueber ein hoeheres Protokoll dafuer sorgen das die
Bausteine die zusammengefuehrt sind nicht wild anfangen darauf
loszusenden sondern dies nur tun wenn sie von deinem Master gefragt
werden.

Olaf

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja .. das wäre natürlich machbar. Das heißt die Slaves dürfen nur was
sagen, wenn sie auch gefragt werden. ;)

Aber mit einer Diode? Wäre die richtige Lösung nicht ein ODER-Glied?

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich jetzt inzwischen schon 3 AVRs verbinden will, muss ich natürlich
weiter nach einer Lösung suchen. Im Moment sollen ATmega16. ATtiny12
und ATtiny26 verbunden werden. Wäre es nicht sinnvoll und auch machbar
das TWI beim ATmega16 mit dem USI des ATtiny26 und gleichzeitig den
ATtiny12 anzubinden, wobei das Protokoll softwareseitig am ATtiny12
nachgebildet werden müsste?

Ich frage das, weil ich mich mit dem Interface auch noch nicht so
auskenne und ja auch sicherstellen muss, dass ich den richtigen
Baustein anspreche. Mein Master wäre hier der ATmega16.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann mit Dioden auch ein OR-Gatter bauen. Natuerlich kann man auch
gleich eins kaufen, nimmt aber mehr Platz auf der Platine weg. Sowas
lernt man halt wenn die Vorlesungen von einem alten Knacker gemacht
wurden. :-)

Diese Loesung ist natuerlich schon etwas fuer einen kleineren Rahmen
sag ich mal. Wenn mehr Controller verbunden werden sollen und dann noch
ueber groessere Entfernungen wuerde ich entsprechende Bustreiber
verwenden. Das waere zum Beispiel Wandler fuer RS422. Das ist
unidirektional ueber zwei Leitungen mit Abschlusswiderstand. Die
Wandler sind Industriestandard und es gibt sie auch bei Reichelt. (z.B
UA9637/38 von TI)
Das ist im Prinzip wo aehnlich wie ein MAX232 bloss billiger und besser
und braucht mehr Leitungen.
Es gibt auch noch RS485, da wird jedesmal die Leitung umgeschaltet,
konnte ich mich aber noch nie mit anfreunden.

Olaf

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.