Forum: Mikrocontroller und Digitale Elektronik simples Bus-System gesucht


von Peter (Gast)


Lesenswert?

Hallo,

ich möchte gerne einige AVRs über eine gewisse Entfernung miteinander 
kommunizieren lassen und suche ein simples Bussystem um dies zu 
realisieren. SPI wäre für diesen Zweck eigentlich schon ganz gut 
geeignet, jedoch das Problem ist, dass es schon über grössere 
Entfernungen (bis ca. 40m) gehen soll. Da bei SPI die Signale teilweise 
auf den selben Leitungen in beide Richtungen gehen, scheiden 
irgendwelche Transceiver (z.B. MAX232 usw.) aus. Ich habe auch schon an 
CAN gedacht, aber das wäre wohl für meine Zwecke schon ein ziemlicher 
Overkill. Es wäre nett, wenn ihr mir vielleicht ein paar Ideen geben 
könntet, wie ich sowas am besten realisieren kann. Also es soll nicht zu 
aufwendig sein und einen einfachen Datentransfer zwischen einem Master 
und einigen Slaves in beide Richtungen über die oben genannte Entfernung 
ermöglichen. Und das über möglichst wenig Leitungsadern.

Vielen Dank schon mal

Gruss, Peter

von Markus Burrer (Gast)


Lesenswert?

Einfachste Möglichkeit ist RS485. Schnell, billig und große Reichweiten.
Sinnvollerweise sollte man aber einen der neuen Megas einsetzten. Mit 
den neuen USART's geht das besser weil die einen Multiprozessor Mode 
kennen.

Hoffe geholfen zu haben

von Peter (Gast)


Lesenswert?

Hallo Markus,

RS485 ist aber kein Bussystem. Das hilft mir leider keinen Millimeter 
weiter.

von Markus Burrer (Gast)


Lesenswert?

Hi Peter,
natürlich ist RS485 ein Bussystem. CAN ist von der Hardware fast 
identisch. Nur das CAN einen unheimlichen Protokolloverhead hat. Bei 
RS485 kannst Du Dein eigenes Protokoll implementieren. Außerdem brauchst 
Du für CAN spezielle Treiber IC's, für RS485 kannst Du statt eines 
MAX232 einfach einen MAX485 verwenden. Laut Spezifikation kann man an 
einen Standart RS485 Bus bis zu 32 Geräte hängen, bei manchen 
Treiberbausteinen auch mehr. Das ist aber nur abhängig von der Kapazität 
und der Belastung des Busses durch dir Treiber.
Ich habe schon mal einen einfachen Bus mit 3 Controllern aufgebaut, 
leider noch mit den alten AVR. Musste desshalb jedes Byte mithören, aber 
es ging.
Also wenn Du nicht gerade 100 Devices an den Bus hängen willst ist das 
denke ich die optimale Lösung.

von Peter (Gast)


Lesenswert?

Hallo Markus,

ich war bislang der Annahme, RS485 ist im Prinzip das selbe wie RS232, 
nur mit bipolarer Übertragung auf 2 gegenphasigen Leitungen pro Richtung 
wegen der Leitungslänge bzw. der Störungsunempfindlichkeit. Aber dass 
das ein Bussystem sein soll, ist mir neu. Hast Du mal ein Beispiel in 
Form eines Schaltplans hier irgendwo im Internet?

Danke!

Gruss, Peter

von Markus Burrer (Gast)


Lesenswert?

also ich kenne jetzt nur schaltpläne die bei dem pascal compiler von 
e-lab dabei sind.
ich werd mal einen auf meine HP hochladen und hier verlinken.

von Markus Burrer (Gast)


Lesenswert?

So, ich hoffe das geht, ansonsten hier nochmal so

http://www.elektronik-projekt.de/pdf/LANsch.pdf

von Markus Burrer (Gast)


Lesenswert?

ups, da hab ich was falsch verstanden.
naja, geht ja

von Peter (Gast)


Lesenswert?

Hallo Markus,

vielen Dank!

Das hilft mir nun schon ein gutes Stück weiter. Und mal wieder etwas 
dazugelernt! Also nun muss ich nur noch eine geeignete Software dazu 
stricken. Wenn ich das richtig sehe, sind die Slaves sozusagen nur 
lesend am Bus und dürfen nur dann etwas mitteilen, wenn der Chef es 
erlaubt. Ich wühle mal etwas im Netz herum, vielleicht finden sich ja 
sogar Code-Beispiele in C, wie man so etwas dann am geschicktesten 
steuert.

Also, nochmals vielen Dank an Dich, ich werde Dich dafür auch in mein 
Nachtgebet einschliessen ;-)

Gruss, Peter

von Peter (Gast)


Lesenswert?

Hallo Markus,

noch eine letzte Frage, benutzt Du zur Kommunikation den UART des MC 
oder wird das alles Softwaremässig gemacht?

Danke für die Auskunft!

Gruss, Peter

von Markus Burrer (Gast)


Lesenswert?

Hi Peter, danke für das nachtgebet :)
Also zur Kommunikation solltest Du sogar den UART einsetzen.
Ich würde Dir sogar dringend raten einen der neuen ATmegas zu verwenden. 
Nur die haben den sog. USART und nur der beherscht den Multi Prozessor 
Mode. Es geht zwar auch ohne, aber dann mußt du wie gesagt jedes Byte 
durch die Software analysieren lassen.
Kurze Erklärung: Im Multi Prozessor Mode werden die Daten nucht mit 8 
sondern mit 9 Bit versendet. Ist das neunte Bit gesetzt handelt es sich 
um eine Adresse, ansonsten um Daten. Der USART (der neue) ist jetzt so 
intelligent das er erst mal nur einen IRQ auslöst wenn ein Byte mit 
gesetztem neunten Bit reinkommt, den Rest ignoriert er. Kommt ein 
Adressbyte kann die Software schauen ob der Controller gemeint war. Wenn 
ja schaltet die Software den USART um und jedes empfangene Byte wird 
empfangen.

So, hoffe die Infos reichen.

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.