www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik bus system für senden und empfangen?


Autor: PoWl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Die sache mit dem I2C Bus ist ja ganz nett, aber wenn ich auf ein 
bestimmtes externes ereignis eines slaves reagieren möchte bleibt mir 
nix anderes übrig als dass der master die slaves ständig anspricht und 
abfragt ob sich inzwischen etwas getan hat, und das vorzugsweise in dem 
zeitinterval in dem dieses ereignis noch gültig ist.

gibt es da noch bus-systeme der nicht auf dem master slave system 
basiert, also in dem jeder knoten bei einem gewissen ereignis sofort 
bescheid geben kann so dass andere bausteine möglichst schnell reagieren 
können?

mfg Paul H.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solche (I2C) Bausteine, die externe Ereignisse haben (zB 
Eingangserweiterungen) haben dann meistens einen Interruptausgang, der 
dazu herangezogen werden kann als Trigger.

Autor: Hmm... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja,es gibt Bussysteme wo der Master der Reihe nach alle Slaves 
abpollt.Aus der Zeit die zum Abfragen eines Slaves nötig ist,ergibt sich 
die Zykluszeit in der spätestens ein aufgetretenes Ereignis bemerkt 
wird. Beim ASi dauert sowas z.b max. 5ms:

http://de.wikipedia.org/wiki/AS-Interface

Ansonsten müsste man von jedem Slave eine Signalisierungsleitung 
legen,durch die er auf sich aufmerksam machen kann.

Autor: fnah (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: PoWl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also d.h. da hat noch niemand den goldenen bus erfunden?

das problem besteht ja darin dass wenn es mehrere sender gibt, keiner 
von denen genau wissen kann ob ein anderer im nächsten taktzyklus nicht 
auch senden will und es dan eine kollision gibt. Das könnte man ja 
umgehen in dem man jedem Knoten eine fortlaufende adresse gibt.. 001, 
002.. 003 usw. Nach jeder sendeaktion eines bausteins müssen nun 
mindestens die anzahl an taktzyklen gewartet werden wie hoch auch die 
adresse des jeweiligen senders liegt. somit hat jeder sender seine 
eigene taktnische in der er mal senden darf. dazu ist allerdings ein 
kleiner master notwendig, auch wenn er lediglich dazu dient den knoten 
mitzuteilen wie viele es von ihnen denn gibt, esseidenn man programmiert 
es ihnen ein, aber wenn man dann mal einen knoten mehr einbaut muss man 
gleich alle anderen neu programmieren. So eine Adresse ließe sich ja 
einfach mal über Dip-schalter einprogrammieren.

dann bräuchte man allerdings auch 3 leitungen, eine takt-leitung, eine 
daten-leitung, und eine reset-leitung damit die knoten wissen wann der 
master ihnen mitteilen möchte wie viele knoten es gibt. Der Takt darf 
hier aber wohl auch nicht allzu hoch sein da der AVR ja zwischen den 
taktzyklen ja teilweise noch einiges an befehlen abzuarbeiten hat..

vielleicht doch lieber polling?

schau mir jetzt mal das as-interface da an^^

Autor: fnah (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>das problem besteht ja darin dass wenn es mehrere sender gibt, keiner
>von denen genau wissen kann ob ein anderer im nächsten taktzyklus nicht
>auch senden will und es dan eine kollision gibt.
genau das problem ist bei can geloest...

Autor: fnah (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: 12:00 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>also d.h. da hat noch niemand den goldenen bus erfunden?

Schau Dir mal FlexRay an. Der Bus kann so ziemlich alles was das Herz 
begehrt. Ist halt nur "ein wenig" komplexer als die anderen Bussysteme. 
:-)

Für Deine Zwecke wäre CAN genau die richtige Wahl. Kollisionen sind dank 
Arbitrierungsmechanismen keine Thema. Ausserdem nehmen Dir die 
Communication Controller einen Haufen an Arbeit ab, so daß das Handling 
von CAN nicht wesentlich schwieriger als der I2C sein sollte.

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.