Forum: Mikrocontroller und Digitale Elektronik Datenaustausch zwischen 2 AVRs


von Ronny Schulz (Gast)


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?

von Olaf (Gast)


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

von Ronny Schulz (Gast)


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.

von Peter D. (peda)


Lesenswert?

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


Peter

von Ronny Schulz (Gast)


Lesenswert?

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

von olaf (Gast)


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

von Ronny Schulz (Gast)


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?

von Ronny Schulz (Gast)


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.

von Olaf (Gast)


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

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.