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.
...richtig verschalten... ...der RXD auf je einen Input... Das ist wohl nicht richtig.
Wie sieht denn die Schaltung aus? Wird der Port mit den Umschaltsiggnalen vom Programm richtig angesteuert?
@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
Codesammlung SW-UART, bei lahmen 9600 Baud überhaupt kein Problem. Peter
@ Andreas Kaiser (a-k)
>OR statt AND.
OR gleich einen fertigen 2:1 MUX nehmen ;-)
MFG
Falk
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...
> OR gleich einen fertigen 2:1 MUX nehmen ;-)
Analog-Mux? Dann +2xR sonst offen. Eher schon einen Demux, einen halben
'139 oder so.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.