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?
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
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.
Der ATTiny26 hat ja ein I2C-Slave Interface, damit kannst Du bis zu 128 Slaves an 2 Drähte hängen. Peter
Sorry ich hatte keine genaue Bezcihnung angegeben. Ich gehe jetzt von einem Tiny oder Interface aus. Mich interessiert z.B. der ATtiny12.
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
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.