Hi. Möchte das in C schreiben also bitte keine ASM Tipps. Arbeite mit AVR ATMegas. Ich möchte eigentlich einen Bus der über eine Leitung mit sovielen Mastern wie benötigt funktioniert. Kann ich dafür nicht die schon bestehende UART Schnittstelle zu hilfe nehmen? Meine eigentliche frage ist ob ich den UART Empfangs PIN per PINX trotzdem noch abfragen kann obwohl ich die UART Schnittstelle schon initialisiert hab? Ausserdem müsste ich wenn ich z.B. bei einem ATMega16 die UART RX und TX zusammen auf eine Leitung lege die Leitung auf RX dann abschalten wenn der µC selbst sendet bzw. diese Daten einfach ignorieren. Hat jemand damit schon erfahrung oder ist so ein Protokoll vielleicht schon vorhanden und ich kann mir die ganze Arbeit sparen? Ziel ist es z.B. "innerhalb eines Gerätes" mehrere µCs miteinander zu verbinden (z.B. einen für LCD Dislplay, einen für Berechnung und einen für IN unt OUTs). Auch mein Haus möchte ich damit vernetzen, also nicht nur innerhalb eines Gerätes. Ausserdem (und deswegen möchte ich nur einen Draht) sollte es auch per Funk übertragbar sein.
Das kann man ganz einfach mit RS485- oder CAN-Transceivern machen. Bei den meisten (allen?) RS485-Transceivern kann man den Sende- und den Empfangskanal einzeln freigeben.
Na ich will das halt am besten direkt mit nem µC machen ohne noch ein extra Bauteil.
Dann wirst du alles (wirklich alles) zu Fuß machen dürfen. Lass nur mal zwei Master unterschiedliche Pedel auf die Leitung geben: da raucht es!
So einfach nur mit UART klappt das nicht, denn das ist erstmal kein Bussystem. Man könnte für so etwas z.B. einen i2C Bus benutzen. Deine Anforderungen sind aber auch sehr ausgeweitet, denn für die Hausvernetzung und Funk nutzt man ganz andere Techniken als in der Kommunikation zwischen Bauteilen, die nahe beieinander sind. Übrigens hat auch der UART 2 "Drähte", nämlich Senden und Empfangen.
Jap ich weiß das UART 2 Drähte hat. Deswegen meine Frage ist es möglich das ich RX und TX zusammenschalte oder mach ich mir dabei den µC kaputt? So könnte ich ganz leicht alles über eine Leitung machen. Vielleicht eine Diode vor den TX des µC schalten. Wenn der µC selber Sendet dann wird der UART Interrupt einfach ignoriert bzw. für die Zeit ausgeschalten. Wenn nicht dann bleibt er an und kann so etwas empfangen. Ausserdem meine Frage und wäre super wenn sie mir jemand beantworten würde ob ich auf den PIN des RX (per C Code PINx) zugreifen kann obwohl ich UART schon aktiviert habe? So kann ich eine Kollissionsüberprüfung realisieren. Das heisst wenn ein anderer sendet muss der µC eben warten (das würde ich mit nem PIN Befehl realisieren). Bitte dringend um die Antworten.
Man kann natürlich einen Eingang mit einem Ausgang zusammenschalten. Deine 1-Wire-UART könnte man auch dadurch realisieren, indem man einen Open-Kollektor-Treiber benutzt und den H-Pegel durch einen Pull-up-Widerstände erzeugt. Der Treiber sollte aber keine invertierende Funktion haben, weil sonst der Empfang nicht mehr klappt. Ich habe sowas mit einem 75sz125 mal gemacht.
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.