-
-
Erfahrener Benutzer
Fleißiges Mitglied
Adresshandling/(-konflikte) in Bussystemen (TWI)
Ich habe ein TWI-Bussystem mit einem Master und vielen Slave. Dieser Bus ist sehr dynamisch d.h. es kommen Slave hinzu oder weg. Aber das nur nebenbei, denn es geht eigentlich um das Prinzip.
Zwar erhalten die Slave ja normalerweise statische Adressen bei der programmierung. Nun muss man von jedem TWI-Slave die Adresse wissen, ist ab und zu nicht leicht, wenn die Anzahl etwas grösser ist. Auf einmal geht gar nix mehr im Bus, Also den letzten Slave nochmal raus, schauen ob es jetzt geht, die Adresse ändern und wieder rein.
Jetzt Suche ich nach einer Möglichkeit in einem solchen Fall die Adresse von einem Slave auf eine noch freie Adresse zu ändern. Ich Suche nur die Vorgehensweise, also konkreter Code ist nicht nötig sondern nur wie man sowas löst.
Weil die Nachricht vom Master an die eine Adresse, die mehrmals belegt wird, wird von mehreren Slave beantwortet, das müsste der Master merken und allen Slave mit der Adresse zu einer neuen Adresse verhelfen. So nun ist das ja ein Bus, und wenn die Nachricht, ändere Adresse an eine Adresse geschickt wird machen wieder alle Slave das gleiche. Problem ist gleich geblieben. So nun könnte man den Slaves eine Funktion implementieren das sie eine pseudo-zufällige Adresse aussuchen und sich daraufhin beim Master melden und der sein ok gibt. und das solange bis keine Konflikte mehr vorhanden sind. Aber für ideal halte ich das nicht. Ich habe schon ein Problem damit überhaupt einen Adressenkonflikt Masterseitig zu erkennen. Wie erkennt man Softwaremässig beim Master ob mehrere Slave antworten. z. B. der ACK. der würde ja auch von allen Slave gegeben.
Ist das Problem lösbar? Gibt es da schon fertige Ansätze? Ich finde in Goolge nichts, wahrscheinlich falsche Suchbegriffe.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen