Servus Forum, ich seh mal wieder vor einem Problem. Und zwar habe ich 2 uCs die ich über eine handelsüblichen 3,5-mm Kinkenbuchse (Kopfhöreranschluss) verbinden muss/will, wobei die Stromversorgung des einen uC ebenfall über diesen 3-Poligen Anschluss erfolgen muss. Die Datenmenge wird äußerst gering sein. Der eine uC wird quasi in ein Control-Panel eingebaut. Dieses beinhaltet 2 Potis (A/D-Wandler im uC), 1 Schalter und 3 LEDs. Mehr nicht. Der Andere uC brauch also als Input die 3 Werte und gibt als Output 3 Werte für die LEDs. So nun frage ich mich wie sich das Realisieren lässt. Eine Idee war UART. Braucht aber min. 2 Leitungen (Rx und Tx), I2C auch (Clock, Data) sämmtliche mir bekannten RSxxx bruachen ebenfalls mehr als einen Draht. Daten in eine Richtung mit UART kein Problem, aber bidiraktional ist hier die Herausforderung! Wer har ne Idee und will sie mir veraten? Ich bedanke mich schonmal. MfG Zack
Can bus arbeitet so weit ich weiß mit einer leitung aber wenn die datenmenge so gering ist würde ich an deiner Stelle einfach selber ein Master/Client bus progen
Hmm naja und wie soll so ein Master-Slave-Bus aussehen? Was für ansätze gibt für sowas?
TSE schrieb: > Can bus arbeitet so weit ich weiß mit einer leitung > aber wenn die datenmenge so gering ist würde ich an deiner Stelle > einfach selber ein Master/Client bus progen nope, CAN braucht 2 bzw 3 adern...
Ein 1-Draht-Bus kann z.B. so funktionieren: - Der Bus steht im Idle-Zustand auf 1 - Der Master zieht ihn für bestimmte Zeit auf 0 und stellt dann ebenfalls für definierte Zeit ein Datenbit auf die Leitung. - Dann erhält der Slave einen Zeitslot zugeordnet, in dem er sein Bit sendet - Dann wird der Bus wieder in den Idle-Zustand versetzt. Auf diesem Protokoll wird ein logisches Protokoll aufgesetzt, das den Slots zyklisch bestimmte Werte zuordnet. Die werden dann vom jeweiligen µC verarbeitet.
CAN ist differentiell und braucht zwei Leitungen. Machst Du Anlehnung an LIN-Bus: - 1 Leitung + GND - 1 Master, n Slaves - Master sendet / pollt zyklisch oder bei Bedarf - bei PTP Verbindung keine Adressierung notwendig - realisierbar mittels USART: RXD und TXD werden über eine Diode miteinander verknüpfert, Pullup nicht vergessen. - Tricky: sendende CPU empfängt eigenes Gesendete - nur RX ISR nötig Gruss Bernd
Ich würde durch umpolen der Versorgungsspannung Daten zum Slave senden. Der Slave braucht dann nur einen gleichrichter. Vom Slave zum Master gehts dann über den dritten draht. Auf die Weise sollte man auch Hardware-UART oder -SPI des Controllers nutzen können. Ist dafür hardwareseitig aufwändiger als andere Lösungen. Sebastian
Sony LANC funktioniert auch als "1wire", wobei dort noch ein Takt mit übertragen wird. Man sollte also mit jeweils einem Open-Collector-Treiber pro Seite Daten auf einer Leitung senden können. Wenn man dann noch das Signal wieder abgreift, kann man dann auch die Daten des anderen (und die eigenen) empfangen. Dadurch sollte auch eine Kollisionserkennung möglich sein. Die Lösung mit der Wechselspannung wird für unidirektionale Kommunikation im Bereich der Modelleisenbahn benutzt. Dass man da auch eine Rückmeldung hat, ist mir nicht bekannt. Dass es mit nur einer Leitung zur Rückmeldung funktionieren soll, bezweifle ich, da ein Masse-Bezug fehlt.
Es reichen auch zwei Drähte für Versorgung und Signal. Schau Die mal das EIB Protokoll oder die billigene Derivate an (z.B. www.freebus.org). Wenn Spaß macht kannst Du ja auch was auf "HF" modulieren und mit einem TP wieder rausholen. Signal kannst Du über nen PWM Ausgang erzeugen (so im kHz Bereich) und mit einem C auf die Versorgung schicken. Der Empfänger filtert sich das Nutzsignal wieder raus. Anders rum funktioniert das natürlich genauso (siehe Power Line) Gruß
UART half duplex ist problemlos mit einem Draht machbar. Auf beiden Seiten RX direkt dran und TX über eine Diode einkoppeln, dann noch einen Pullup dran. Klappt besser, wenn einer den Hut auf hat, also der Slave nur auf Anfragen antwortet.
Moin, das ist ja alles schön und gut, aber lohnt sich der Aufwand? Beim Einstecken eines Klinkensteckers wird zwischen benach- barten Kontaken kurzzeitig ein Kurzschluss erzeugt. Hoffentlich himmelst Du damit nichts. Viel Erfolg Stefan
Wenn Du mittels offenem Kollektor beidsitig auf den Signaldraht gehst, der mittels Pullup nach Vcc gezogen ist, kannst Du die Controller über UART verbinden. RX und TX werden in dem Fall auf beiden Seiten gebrückt. Der sendende Controller muß seine eigenen Daten ausmaskieren. Der Slave sendet nur auf Anfrage des Masters.
>Beim Einstecken eines Klinkensteckers wird zwischen benach- >barten Kontaken kurzzeitig ein Kurzschluss erzeugt. Hoffentlich >himmelst Du damit nichts. Wenn man + auf die Spitze, Signal auf den Ring und Masse auf den Schaft gibt, geht das schon. Die Signalleitung sollte mit einem Schutzserienwiderstand versehen werden.
1. Lösung 1-wire 2. Lösung eigene HW dazwischen : So hab ich es mal gemacht. Die Versorgung muß z.B. min. 6V sein. Dann werden die Daten auf der Spannungsversorgung als Serielles Protokoll übertragen, indem die Spannungsänderung an der Versorgungsspannung 6V = LOW, 9V = HIGH die Daten ergeben. Damit kannst du nicht wahnsinig viel übertragen, aber so 300 Baud gehen sich schon aus (bei einigen 100mA). Eine kleine Zusatzhardware ist schon notwendig, aber der Stabi sitzt an der Versorgungsspannung und davor reicht schon ein Widerstand, Transistor und eine Zener Diode. Wenn du 2x Plus nimmst, dann geht es in beide Richtungen. Ich wollet damals nur 2 Verbindungsleitungen. ciao, Philipp
Der "Control-A1-Bus" von Sony erfüllt alle Deine Anforderungen. Das Protokoll ist minimal, es ist bidirektional und kurzschlußfest. Und man kann es beliebig erweitern. Applikationen gibt (gab) es viele und es gab mal eine gar nicht kleine Community, die sich mit allen Hardware-, Protokoll- und Software-Aspekten beschäftigt hatte. Es sollte sich also genügend Material für eine eigene Implementierung finden lassen. Blackbird PS.: In meine "Vor-µC"-Zeit hatte ich so einen Adapter noch diskret aufgebaut. Der tut es heute noch mit meiner Anlage.
Eindraht-RS232-Halbduplex Erschienen in Elektor Ausgabe 463, Juli/August 2009 http://www.elektor.de/jahrgang/2009/juli-047-august/eindraht-rs232-halbduplex.989203.lynkx
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.