Hallo ich habe vor über den PC bzw RS232 drei Controller zu steuern. D.h. ich würde es so programmieren dass je nach 1. byte der entsprechende controller reagieren soll, beispiel: Daten über rs232: | uC1 | Daten | CS | | uC2 | Daten | CS | | uC3 | Daten | CS | meine frage ist, wie man sowas hardwaremässig realisieren kann. das ist ja eine art bus. ich kann ja die RS232 ja nicht einfach schleifen ? über tipps wäre ich sehr erfreut. anhang dabei Grss
Mikrocontroller und PC im Ring zusammenschalten mit Adressbit. Jeder schickt es solange weiter bis die Daten am Richtigen Controller angekommen sind.
Hallo nein das will ich nicht. mir gehts ums prinzip ;) das oben ist nur eine beispielskizze gruss
@ Boogie (Gast) >meine frage ist, wie man sowas hardwaremässig realisieren kann. Sinnvollerweise mit RS485 und Halbduplextranceivern, z.B. MAX485. Dann noch ein Mini-Datenpaket zusammenstricken, fertig. Ist schon millionenfach hier gemacht worden, einfach mal suchen. MfG Falk
Hallo danke für die antworten. werde danach suchen bzw googlen :) gruss
Hi AVRs können Master-Slave: Im 9-Bit-Modus wird eine Adresse verschickt. Der adressierte Slave (und der Master) schalten in den 8-Bit-Mode und kommunizieren ganz normal. Danach schaltet der Slave wieder in den 9-Bit-Mode und wartet auf den nächsten Befehl. Geht zwischen AVRs wunderbar. Nachteil: der PC kann das nicht. Abhilfe: Zwischen PC und Slaves ein weiterer AVR. MfG Spess
Hi! Hier noch ein Ansatz: Die RS232 kann man schon zusammenschalten, mit paar zu beachtenden Dingen. RXD kommt an alle 3 µCs. Spendiert man noch 2 Pins pro µC fur eine Hardwareadressierung kann man das identische Programm in alle 3 µCs flashen. Alternativ geht auch eine Adresse im EEPROM. Jetzt braucht man noch ein kleines Protokoll: Alle 3 µCs empfangen die Daten, welches ein Adressbyte enthält (bzw. an einer definierten Stelle 2 Bits) und vergleichen dies mit ihrer HW-Adresse über die Pins bzw. EEP. Somit wissen die µCs, ob sie gemeint sind. Für eine Kommunikation in die eine Richtung ist man jetzt fertig. Soll es auch in die andere Richtung gehen, kein Problem: TXD bekommt auf 5V-Seite am Transceiver einen Pullup und wird dann mit 3 Dioden entkoppelt. Heißt, der Ruhepegel von 1 kann von jedem µC auf 0 gezogen werden, ohne dass es zu Problemen an den anderen µC-TXD-Pins kommt, somit eine Art Open Kollektor-Schaltung. SW-seitig muss man jetzt noch beachten, dass nicht mehrere µC gleichzeitig senden dürfen. Das heißt, PC ist der Chef und schickt eine Anfrage mit HW-Adresse. Jetzt darf nur der Gefragte antworten. Sollen die µCs "ungefragt" an den PC senden können, muss man eine Busarbitrierung durchführen. Bevor gesendet wird, lauscht ein µC eine Weile auf der TXD-Leitung ob da jemand anderes sendet bzw. auf Low zieht (Pin auf I/O-Mode Eingang). Ist das nicht der Fall, kann er in den UART-Mode schalten und senden. Hier ist noch ein gewisses Restrisiko, das dies gleichzeitig passiert und dann doch 2 gleichzeitig senden. Gruß Roman
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.