Hallo, ich habe vor ein kleines netzwerk von Microcontroller aufzubauen und würde gerne wissen was für ein "Bus" ich nehmen soll. DIe vorstellung: mehrere Controller (Atmega, ATTiny) sollen über ?2? leitungen verbunden werden. Zusätzlich möchte ich eine Schnittstelle RS232 für den Computeranbringen. Die Controller sollen sich über ein Protokoll unterhalten was zb so aussehen wird !MC1 Schalter S4 ist gedrück! !MC4 A5 wird geschaltet! !MC4 A5 ist geschaltet! Als erstes kommt der Controller name in diesem Fall MC und die nummer welcher gemeint wird. Danach kommt der Befehl was er macht bzw gemacht hat. Das Ganze möchte ich dann über Hyperterm am PC Anzeigen lassen was die Controller untereinander so Quatschen. Die ! zeigen eine Befehlskette an. also das zwischen den ! etwas an daten geliefert wird. Die MCs sollen im Auto verbaut werden, und vielleicht kommen da Strecken von bis zu 5 Meter zusammen. (evt auch in anderen Projekten dann noch mehr Meter) Worüber mache ich die Kommunikation dann am besten ? RS232 RS486 RS422 oder oder oder Gruss Marc
I²C, muss ja wahrscheinlich nicht allzu schnell sein, da kann das auch über 5 Meter Kabel geführt werden.
RS485 ist sehr störsicher und die Software ist RS232 sehr ähnlich, da sparst dir die i²c library ... gibts zu RS486 auch nen Overdrive, damit man auf 66 MHz kommt? ;-)
>Beitrag "I2C vs. RS232"
Als Master würde ich einen ATmega mit zwei UARTs nehmen; (der/die/das)
eine für den internen Bus, die andere für die PC-Kommunikation.
Den internen Bus würde ich - wie geschrieben - mit CAN-Bus-Treibern
aufbauen. Das interne Busprotokoll aber nicht mit so 'geschwätzigen'
Befehlen wie !MC4 sondern mit einer binären Adresse und einem binär
codierten Befehl; meinetwegen '1', '2', '3', ... falls man das irgendwie
mitlesen wollte.
Die internen Slaves könnten ATmega48 oder größer sein.
>Die MCs sollen im Auto verbaut werden,
Also CAN :-P
Ist seit Jahren im Einsatz und hat sich bewährt.
> Die Controller sollen sich über ein Protokoll unterhalten was zb so > aussehen wird > !MC1 Schalter S4 ist gedrück! > !MC4 A5 wird geschaltet! > !MC4 A5 ist geschaltet! > > Als erstes kommt der Controller name in diesem Fall MC und die nummer > welcher gemeint wird. Danach kommt der Befehl was er macht bzw gemacht > hat. > > Das Ganze möchte ich dann über Hyperterm am PC Anzeigen lassen was die > Controller untereinander so Quatschen. Das ist ja ein haarsträubendes Vorhaben... Wieso sollen die Controller sich untereinander in einer "Fremdsprache" unterhalten, nur damit du es mitlesen kannst? Controller verstehen sich viel besser auf eine binäre Sprache als auf das ASCII-Zeugs, das du lesen kannst. Überleg dir das Konzept besser nochmal... > Die ! zeigen eine Befehlskette an. also das zwischen den ! etwas an > daten geliefert wird. Schon das ist ungeschickt. Wenn du mit einem Terminal was mitlesen möchtest, wäre ein CR+LF am Ende wesentlich sinnvoller als die Ausrufezeichen...
du könntest auch über Lin nachdenken. Läuft auf der (in jedem AVR vorhandenen) UART-Schnittstelle und ist auch ein Bus nach Automotive Standard
>du könntest auch über Lin nachdenken.
... ebenso über USB, Ethernet, ...
Ich denke, er sucht eine Problemlösung und kein neues Problem :-)
Bei Multimasterfähigkeit (Stichwort Busarbitrierung) sollte CAN das Nervenschonendste sein. Bei Singlemaster nimmt man üblicherweise RS-485.
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.