Forum: Mikrocontroller und Digitale Elektronik Auf UART Port zugreifen


von Markus N. (Gast)


Lesenswert?

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.

von Rahul (Gast)


Lesenswert?

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.

von Markus N. (Gast)


Lesenswert?

Na ich will das halt am besten direkt mit nem µC machen ohne noch ein
extra Bauteil.

von Rahul (Gast)


Lesenswert?

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!

von Daniel M. (usul27)


Lesenswert?

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.

von Markus N. (Gast)


Lesenswert?

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.

von Rahul (Gast)


Lesenswert?

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