mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik simples Bus-System gesucht


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Burrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Markus,

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

Autor: Markus Burrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Burrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus Burrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich hoffe das geht, ansonsten hier nochmal so

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

Autor: Markus Burrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups, da hab ich was falsch verstanden.
naja, geht ja

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Burrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.