Hallo Forum ! Für meine Applikation würde ich gerne einen Datenaustausch zwischen mehreren unterschiedlichen ATTinys (Slaves) und einem ATMega168 (Master) umsetzen. Es sollen je nach Einsatzort unterschiedliche Slaves verwendet werden, die kleinsten sind Tiny25. Das Problem ist, das ich möglichst viele Port-Pins frei haben möchte. Deshalb möchte ich nur ein Portpin zur Kommunikation verwenden. Die Datenleitung wird zentral mit einem Pull-Up-Widerstand versorgt und jeder Slave kann die Datenleitung auf GND ziehen, wenn er Senden darf. Das funktioniert super wenn ich das Port-Pin auf Eingang stelle und dann auf dem Bus zuhöre. Zum Senden wird das DDR umgeschaltet und 0 ausgegeben. Um die Störsicherheit zu erhöhen würde ich gerne den zentralen Pull-Up verkleinern. Das bedingt jedoch einen Transistor (oder Treiber), der den höheren Strom am Slave vertragen kann. Jedoch kann der Transistor jetzt nicht unterscheiden zwischen Senden und Empfangen. Gibt es da irgend eine Schaltung oder einen Treiberschaltkeis, der automatisch erkennt, ob der µC-Ausgang Tristate hat und umgekehrt auch die Daten von aussen zum µC weiterleitet? Randbedingungen: 5V-System, kein Stromsparen, sehr wenig Platz, Buslänge bis zu 3m, Datenrate 57600Baud (angestrebt, wenns nicht geht, dann muss es halt langsamer laufen), all zu teuer sollte es auch nicht werden vielen Dank
@docean das war ja ma wohl nix, wa. auf die bloede idee bin ich auch gekommen. wie waere es denn ma mit richtigen antwort?
Schau Dir mal die AppNotes zu 1-Wire an, da ist das diskutiert wie man das am besten löst. HTH
Ja, warum bin ich da nicht selber drauf gekommen. Einfach knallhart senden wenn man dran is. Da kann der Pull-Up relativ gross sein (1k) da er ohnehin nur benoetigt wird wenn keiner sonst sendet. Das Risiko einer Buskollision muss ich dann halt versuchen per Protokoll zuverringern. Das werde ich mal testen und schauen wie lang und schnell mein Bus werden kann.
RS232 als OC mit 9bit Datenbit, wobei bit9 gesetzt = adressierung, sowie CRC und Errorsignalisierung im Stop-Bit wie auch CSMA/CA oder CSMA/CR. Aktiver pull-up, bei i2c kennt man sowas, mit einem 4066, der einen stärkeren pull-up schaltet, geht recht gut und ist billig. Ansonsten, Use a current mirror. Use a resistor to a higher voltage and a clamping diode to VDD (schottky). LTC4311 could be used.
vllt. kann man auch vom master regelmässig alle µC timen (pinchange-int) und dann bekommt jeder Slave (einer nach dem anderen) ein bestimmtes zeitfenster was zu senden.
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.