Forum: Mikrocontroller und Digitale Elektronik atmega8 USART auf 2 TXD aufteilen


von ceferus (Gast)


Lesenswert?

hi,
ich habe folgendes Problem:
Ich verwende einen Atmega8, und will damit per EIA232 2 Geräte 
ansprechen.
Da ich bei einem davon nur Daten hinschicken muss kann RXD eigentlich 
bleiben wie es ist.

Meine erste Idee:
4081 (AND-Gate) nehmen, richtig verschalten und über den µC dann das 
entsprechende Gate ansteuern.
Geschaltet ist dementsprechend der RXD auf je einen Input von beiden 
Gates und die anderen Inputs auf 2 i/o Pins des µCs.
Laut Datenblatt hat der Baustein transition times von 50-100ns, was
bei meinen 9600baud ausreicht.
Soweit geht das ganze eigentlich auch, über das aktive Gate kommen die 
Daten sauber rüber.
Schalte ich jetzt das Ganze um und sende wieder, kommen über das jetzt 
eigentlich deaktivierte Gate haufenweise Nullbytes.
Interessanter Nebeneffekt: Wenn ich nach Umschalten der Gates noch ein 
delay einbaue, kommen mehr von diesen Nullbytes (bei gleichen gesendeten 
Daten).

Kann mir jemand diesen Effekt erklären?

Für andere Vorschläge zur Realisierung wäre ich natürlich auch dankbar.

von Tippgeber (Gast)


Lesenswert?

...richtig verschalten...

...der RXD auf je einen Input...

Das ist wohl nicht richtig.

von ceferus (Gast)


Lesenswert?

sorry, typo. ich meinte natürlich TXD

von Ralli (Gast)


Lesenswert?

Wie sieht denn die Schaltung aus?
Wird der Port mit den Umschaltsiggnalen vom Programm richtig 
angesteuert?

von Falk B. (falk)


Lesenswert?

@Meine erste Idee:

>Schalte ich jetzt das Ganze um und sende wieder, kommen über das jetzt
>eigentlich deaktivierte Gate haufenweise Nullbytes.

Dein deaktivierter Ausgang muss auf HIGH stehen, NICHT LOW. Das ist 
nämlich das Stop-Bit.

MFG
Falk

von Andreas K. (a-k)


Lesenswert?

OR statt AND.

von Peter D. (peda)


Lesenswert?

Codesammlung SW-UART, bei lahmen 9600 Baud überhaupt kein Problem.


Peter

von Falk B. (falk)


Lesenswert?

@ Andreas Kaiser (a-k)

>OR statt AND.

OR gleich einen fertigen 2:1 MUX nehmen ;-)

MFG
Falk

von stringcreater (Gast)


Lesenswert?

einen ähnlichen effekt hatte ich, wenn ich während des sendens über UART 
an den PC einen reset über den wachdog durchgeführt habe. ich vermute, 
es kam dadurch, dass ich mitten im byte abgebrochen habe und kein stop 
bit kam.
interessant fand ich, dass am gleichen PC die nullen nur über com1 
reinkamen, jedoch nicht über den USB-COM adapter an COM3...

von Andreas K. (a-k)


Lesenswert?

> OR gleich einen fertigen 2:1 MUX nehmen ;-)

Analog-Mux? Dann +2xR sonst offen. Eher schon einen Demux, einen halben 
'139 oder so.

von ceferus (Gast)


Lesenswert?

Danke soweit, war tatsächlich ein layer 8 Fehler.
Ich bin (warum auch immer) von 1=H/0=L ausgegangen, und demensprechend 
das das deaktivierte Gate low sein muss.
Andersrum läufts natürlich (mit OR, klar).

@Peter:
Wäre fast die elegantere Lösung, aber soweit genügt mir das.

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.