Bascom Kommunikation zwischen mehreren AVRs

Uwe H.

Neues Mitglied
27. Juli 2011
264
0
0
Hinter die Grenze :-)
Sprachen
  1. BascomAVR
  2. ANSI C
  3. Assembler
Hallo zusammen :)

Ich habe ein paar Fragen in Sachen Kommunikation zwischen AVRs. Dazu zuerst die Hintergrundinfos: Ich plane eine Steuerung für ein Passivhaus, die die Lüftungsanlage, den Erdwärmetauscherpumpe und noch andere Sachen regelt. Technisch ist das Ganze so aufgebaut, dass jedes zu steuernde System autonom läuft, sprich seinen eigenen Controller hat und unabhängig ist von jeglicher Zentralsteuerung. Auch ist jedes Element autonom einstellbar. Der Plan sieht jetzt so aus, das ich in die Geräte eine Funktion einbauen will, so dass die Parameter auch von einem "Mastercontroller" verändert und ausgelesen werden können. Es soll dann im Haus ein Display im Wohnbereich geben, auf dem die Daten aller einzelnen Systeme zusammenlaufen, z.B. Temperaturen, Fehlermeldungen (blablabla ihr kennt das ja).

Bei Bascom gibts ja die Möglichkeit der Direktkommunikation zwischen zwei AVRs. Wie sieht das mit mehreren aus, z.B. fünf oder sechs? Wenn der Master Daten sendet, würden diese ja theoretisch an alle übertragen. Wie kann man die Controller unterscheiden lassen, welches Signal für wen ist? Eine Lösung wäre via Interrupt. Beim entsprechenden Controller einen Interrupt auslösen und ihm dann in der ISR die Daten übermitteln. Aber sicher gibts da bessere Lösungen. Wer kennt sich damit aus? Eine andere Frage wäre noch wie lang die Kabelstrecke von Controller zu Controller sein darf, um eine saubere Kommunikation zu gewährleisten...?

Grüße Uwe
 
Ich nehme mal an, dass du die Unterscheidung nicht durch eine separate CS-Leitung pro Controller machen willst.
Wenn ich mehrere zusammenarbeiten lassen wollte und einer der Master ist, der die Kommunikation anstößt, dann würde ich eine synchrone Kommunikation benutzen. D.h. einfach alle RX und TX zusammenschalten, jedem Slave eine Ziffer zuordnen und dann als erstes die jeweilige Ziffer per UART übertragen, bevor die eigentlichen Nutzdaten bzw. Befehle kommen. Der ausgewählte Slave schickt dann zur Sicherheit auch seine Ziffer vor seiner Antwort zurück.
Die Slaves werden dabei reihum abgefragt oder auch gezielt ausgewählt.

Schwieriger wird es, wenn die Slave asynchron schicken können, z.B. wenn eine Alarmmeldung auftritt und du nicht warten willst, bis der Slave das nächste Mal abgefragt wird. Dann könnte es auf diese Art theoretisch passieren, dass zwei Kommunikationen gleichzeitig kommen und den Master verwirren würden.

Grüße

Sebastian
 
Hi Uwe,

ich hab da bei mir mal über den MPCM (Multi Prozessor Communication Mode) nachgedacht. Der läuft über den normalen UART. Allerdings mit 9Bit. Das 9te Bit ist für die Identifikation der Prozessoradresse. Den UART kann man dann an einen LIN-Bus-Treiber anschließen und bekommt dadurch einen Bus mit 2 Adern (GND und Signal). Der LIN-Bus wird auch im Auto eingesetzt und bei Reichelt gibt es da ein paar kleine Bustreiber im DIP8 und SO8-Gehäuse. Wenn ich mich recht erinnere heißen die glaube ich MCP2003 . Kannst ja mal nachsehen ob das was für dich wär.

Andernfalls kannst du auch mit RS485 arbeiten. Da hat glaube ich Markus mal ne Lichtsteuerung für sein Wohnzimmer mit aufgebaut.

Auf jeden Fall mußt du dir ein Protokoll aufbauen damit nicht alle auf einmal miteinander sprechen wollen und es zu Kollisionen auf dem Bus kommt. Das könnte man zB mit einem Token basierenden Algorithmus machen (Token-Ring, Token-Bus, ...) Der Prozessor der grade den Token hat darf sprechen. Ein Master kontrolliert ob der Token auch weitergegeben wird (Timeout) und nicht ein Prozessor wegen Absturz die Weitergabe blockiert.

Gruß
Dino
 
Braucht die RS485, realisiert mit einem MAX485 nicht drei Leitungen? TX, RX und R/W? Hast Du evtl. eine gute Seite, wo man sich das Wissen um die Benutzung der RS485 aneignen kann?
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)