Forum: Mikrocontroller und Digitale Elektronik Atmels, welchen Bus nehmen ?


von Marc (Gast)


Lesenswert?

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

von Mitleser (Gast)


Lesenswert?

jemand der so was ins auto einbauen will sollte mal mit einer LED + 
einem Taster anfangen...

von Sven P. (Gast)


Lesenswert?

CAN wäre typisch für Automotive...

von Kevin K. (nemon) Benutzerseite


Lesenswert?

I²C, muss ja wahrscheinlich nicht allzu schnell sein, da kann das auch 
über 5 Meter Kabel geführt werden.

von Thomas K. (rlyeh_drifter) Benutzerseite


Lesenswert?

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? ;-)

von Entwickler (Gast)


Lesenswert?

>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.

von Alex22 (Gast)


Lesenswert?

>Die MCs sollen im Auto verbaut werden,

Also CAN :-P
Ist seit Jahren im Einsatz und hat sich bewährt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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...

von Julian O. (juliano)


Lesenswert?

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

von Entwickler (Gast)


Lesenswert?

>du könntest auch über Lin nachdenken.

... ebenso über USB, Ethernet, ...

Ich denke, er sucht eine Problemlösung und kein neues Problem :-)

von Lutz (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.