Hallo, ich habe mir eine kleines Netzwerk von µC (AtMega) und einem PC aufgebaut (s.Anhang). Nun sende ich beispielsweise folgende Befehl: &0199; dabei dient das " & "- und das " ; "-Zeichen las Steuerzeichen. "01" soll die den ersten µC ansprechen und "99" ist die Botschaft. Wenn ich diesen Befehl vom PC aus über die RS232 Schnittstelle schicke, dann wird dieses Signal im Umsetzer in das RS485 Signal gewandelt und an die µCs geschickt. Das funktioniert soweit auch ganz gut. Der Umsetzter ist mit einem Max488 aufgebaut, muss also beim Senden und Empfangen nicht enabled werden. Die µC sind mit einem MAX489 aufgebaut und der Eingang ist dauerhaft enabeld, wohingegen der Ausgang erst beim Senden enabled wird. Also ich kann vom PC aus Befehle an die einzelnen µC schicken und diese führen die Befehle aus und können mir auch antworten (RS485 -> RS232). Jetzt kommt mein Problem: Lasse ich ein µC einen Befehl senden, welcher von einem anderm µC ausgeführt werden soll, kommt dieser Befehl irgendwie nicht an. Ich "lausche" mit meinem PC auf dem BUS und sehe, dass der 1. µC zwar die korrekten Befehle senden, der 2. µC aber diese nicht empfängt. Dabei habe ich die UART-Schnittstelle auf den µC so konfiguriert, dass diese interruptgesteuert sind. Beim Senden von µC zu µC, empfängt der "empfänger µC" noch nicht mal ein einziges Zeichen, welches ich teste indem ich in der Empfgangs-Interuptroutine versuche, eine LED ein oder auszuschalten, wenn ein Zeichen empfangen wird. Beim Senden vom PC aus klappt das ohne Probleme. Vielleicht habt ihr ja ne Idee, was da falsch läuft. Gruß Olli
Marco Schwan schrieb: > ist das als 4-Draht-Bus oder als 2-Draht-Bus aufgebaut? > > Gruß Marco Yup, das klappt nur mit Zweidraht (Halbduplex) Bus, da sich sonst die slaves nicht gegenseitig hören können.
Hi, es handelt sich um eine vier draht leitung. Aber wieso ist es nur mit zwei draht möglich? verstehe ich nicht? Olli
Aus WIKI Halbduplex (HX), auch Semiduplex genannt bedeutet wechselseitiger Betrieb. Hierbei können Informationen in beide Richtungen fließen, allerdings nicht gleichzeitig, z. B. Amateurfunk. Vollduplex (DX, manchmal auch FDX) ist der gleichzeitige Betrieb. Es lässt die Übertragung der Informationen in beide Richtungen zu gleicher Zeit zu, z. B. Telefonie. und vier draht ist doch Full duplex oder?
Mal mal ein Bild von den Leitungen mitsamt deren Bezeichnung. Kein Schemabild wie oben. Dann sollte klar werden, warum die µCs nicht miteinander können. 4-Draht RS485 ist für Multimaster nicht einsetzbar, da schon von der Verdrahtung her genau ein Master entsteht. Bei dir der PC. Du schreibst ja selbst, dass die µCs anders angebunden sind als der PC, anderer Transceiver, mit/ohne Enable. Vergiss den Multimaster-Zirkus und bleib bei Single-Master. Wenn Multimaster absolut nötig ist, dann 2-Draht.
überleg doch mal, bei Vollduplex, also 4-draht hast Du quasi einen Kanal zum µC und einen zurück. Der µC hat datenmäßig einen Eingang und einen Ausgang, wenn Du nun auf den Ausgang des µC etwas sendest, was empfängt er dann? ... nix, daher bei Multimaster auf 485 nur Halbduplex. Das bring nun aber auch ein etwas komplizierteres Protokoll ins Spiel, weil ... wie verhinderst Du, dass 2 Master gleichzeitig senden? Sollte das dennoch passieren wie löst Du den Konflikt? Ist nicht ganz trivial, aber machbar.
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.