Forum: Mikrocontroller und Digitale Elektronik 1-Draht und 1 Pin


von Rangi J. (rangi)


Lesenswert?

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

von ... .. (docean) Benutzerseite


Lesenswert?


von Rangi J. (rangi)


Lesenswert?

@docean
das war ja ma wohl nix, wa. auf die bloede idee bin ich auch gekommen. 
wie waere es denn ma mit richtigen antwort?

von g457 (Gast)


Lesenswert?

Schau Dir mal die AppNotes zu 1-Wire an, da ist das diskutiert wie man 
das am besten löst.

HTH

von Rangi J. (rangi)


Lesenswert?

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.

von Chris (Gast)


Lesenswert?

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.

von alexander v. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.