Hey, es heißt das die Priorisierung beim CAN-Bus über die Bit-Arbitrierung gelöst wird. Aber was macht der CAN-Bus z.B. bei dem hier: 0x7 & 0x8 = 0x0 ? Also: 0111 1000 & ------ 0000 Hätten wir jetzt sowas wie das hier: 0111 0100 & ------ 0100 würde das ja noch funktionieren, aber das erste Beispiel ergibt 0 und keiner von beiden Knoten hat 0x0. Habe auch etwas über das Bit-Timing gelesen und stimmt es das ich das richtig verstehe, das sich die Tranceiver bei jedem neuen Bit syncen? Weil einerseits heist es am Anfang des Frames (SOF) und andererseits das jedes Bit in vier Phasen unterteilt ist: Sync Segment - Propagiation Segment - Phase 1 Segment - Phase 2 Segment lg Seb
Es ist tatsächlich so, dass bei jedem Bit einzeln kontrolliert wird, wer von den beiden an der Kollision beteiligten Partner gewonnen hat. Der Verlieren sendet kein weiteres Bit mehr und stört die weiteren Bits des Gewinners nicht. Also: es wird kein Bit des Gewinners zerstört. Gruß Dietrich
0 ist prioritär. beginne mit dem high bit: 0x8 1000 0x7 0111 0x2 0010 | hier merkt 08 das er der höhere ist und verabschiedet sich aus dieser runde. 0x7 und 0x2 machen weiter: 0x7 0111 0x2 0010 | hier merkt 0x7 dass er höher ist 0x2 gewinnt.
Ohne, dass ich jetzt sehr tief in der Materie stecke, aber ich habe mal gelernt, dass der CAN bitweise arbitriert. Es wird also Bit für Bit auf die Leitung geschrieben und jeder Teilnehmer liest gleichzeitig auf dieser Leitung. Schreibt ein Teilnehmer ein rezessives Bit, liest aber gleichzeitig ein dominantes Bit auf der Leitung zurück, so erkennt er, dass er "nicht dran" ist, zieht sich zurück und wird nur noch lesen. Dein Beispiel müsste also so aussehen: A(w): 0 1 1 1 A(r): 0 1 1 1 B(w): 1 Z Z Z B(r): 0 1 1 1 B erkennt nach dem ersten Bit, dass es einen "dominanteren" Teilnehmer gibt und zieht sich vom Bus zurück..
Schlumpf schrieb: > Ohne, dass ich jetzt sehr tief in der Materie stecke, aber ich > habe mal > gelernt, dass der CAN bitweise arbitriert. > Es wird also Bit für Bit auf die Leitung geschrieben und jeder > Teilnehmer liest gleichzeitig auf dieser Leitung. Schreibt ein > Teilnehmer ein rezessives Bit, liest aber gleichzeitig ein dominantes > Bit auf der Leitung zurück, so erkennt er, dass er "nicht dran" ist, > zieht sich zurück und wird nur noch lesen. > > Dein Beispiel müsste also so aussehen: > A(w): 0 1 1 1 > A(r): 0 1 1 1 > B(w): 1 Z Z Z > B(r): 0 1 1 1 > > B erkennt nach dem ersten Bit, dass es einen "dominanteren" Teilnehmer > gibt und zieht sich vom Bus zurück.. Naja, nehmen wir mal das Beispiel. Mir hat man gesagt, das der Bus wie ein Wired - And funktioniert... also : 1000 & 0111 = 0000 1 & 0 = 0, 0 & 1 = 0 etc... Sprich also der Teilnehmer mit 0x8 verabschiedet sich, weil er eine 0 zurückliest und damit schreibt er keine weiteren Bits auf den Bus und das rezessive Bit wird nicht mehr überschrieben von Teilnehmer 0x8... Naja, wired-and also nur bedingt, weil bei einem wired And jetzt immer noch 0 rauskommen würde... auch wenn Teilnehmer B auf high-impedance geschaltet ist.
Seb schrieb: > Sprich also der Teilnehmer mit 0x8 verabschiedet sich, weil er eine 0 > zurückliest und damit schreibt er keine weiteren Bits auf den Bus soweit richtig > das rezessive Bit wird nicht mehr überschrieben von Teilnehmer 0x8... auch noch richtig > Naja, wired-and also nur bedingt, weil bei einem wired And jetzt immer > noch 0 rauskommen würde... auch wenn Teilnehmer B auf high-impedance > geschaltet ist. und wie kommst du auf diesen Unfug, dass ein Wired-And aus einer 1 und einem Z eine 0 macht?
Schlumpf schrieb: > Seb schrieb: >> Sprich also der Teilnehmer mit 0x8 verabschiedet sich, weil er eine 0 >> zurückliest und damit schreibt er keine weiteren Bits auf den Bus > > soweit richtig > >> das rezessive Bit wird nicht mehr überschrieben von Teilnehmer 0x8... > > auch noch richtig > >> Naja, wired-and also nur bedingt, weil bei einem wired And jetzt immer >> noch 0 rauskommen würde... auch wenn Teilnehmer B auf high-impedance >> geschaltet ist. > > und wie kommst du auf diesen Unfug, dass ein Wired-And aus einer 1 und > einem Z eine 0 macht? Du weist schon was Wired And bedeutet, oder?! :D Nur wenn BEIDE Zustände 1 sind, kommt 1 raus
Seb schrieb: > Du weist schon was Wired And bedeutet, oder?! :D Im Gegensatz zu DIR weiss ich sehr wohl, was ein wired and ist.. Und weil du das nicht weisst, stellst du hier solche Fragen. Und wenn man dir helfen will, dann kommst einem noch blöd von der Seite. Mein Tipp: Wenn du´s besser weisst, dann rätsel weiter, warum deine Theorie nicht funktioniert. Oder du nimmst dir ein Stück Papier, malst da mal zwei OK-Ausgänge mit nem gemeinsamen PU hin und denkst mal 30 Sekunden drüber nach, ob du deine Aussage von oben nicht einfach korrigieren willst..
Schlumpf schrieb: > Seb schrieb: >> Du weist schon was Wired And bedeutet, oder?! :D > > Im Gegensatz zu DIR weiss ich sehr wohl, was ein wired and ist.. > Und weil du das nicht weisst, stellst du hier solche Fragen. Und wenn > man dir helfen will, dann kommst einem noch blöd von der Seite. > > Mein Tipp: Wenn du´s besser weisst, dann rätsel weiter, warum deine > Theorie nicht funktioniert. > Oder du nimmst dir ein Stück Papier, malst da mal zwei OK-Ausgänge mit > nem gemeinsamen PU hin und denkst mal 30 Sekunden drüber nach, ob du > deine Aussage von oben nicht einfach korrigieren willst.. Dann korrigiere doch lieber denn Wikipedia Eintrag dazu: Die Wired-And-Verknüpfung lässt sich in positiver Digital-Logik (logischer Zustand 1 entspricht etwa der positiven Versorgungsspannung) im einfachsten Fall durch Dioden erreichen, deren Kathoden als Eingänge dienen, wie in nebenstehender Abbildung die Anschlüsse A und B. Die zusammengeschalteten und über einen Widerstand an Versorgungsspannung liegenden Anoden erzeugen am Ausgang C nur dann eine logische 1 am Ausgang, wenn an allen Eingängen ebenfalls logisch 1 anliegt.
Seb schrieb: > Dann korrigiere doch lieber denn Wikipedia Eintrag dazu: > Die Wired-And-Verknüpfung lässt sich in positiver Digital-Logik > (logischer Zustand 1 entspricht etwa der positiven Versorgungsspannung) > im einfachsten Fall durch Dioden erreichen, deren Kathoden als Eingänge > dienen, wie in nebenstehender Abbildung die Anschlüsse A und B. Die > zusammengeschalteten und über einen Widerstand an Versorgungsspannung > liegenden Anoden erzeugen am Ausgang C nur dann eine logische 1 am > Ausgang, wenn an allen Eingängen ebenfalls logisch 1 anliegt. Jetzt leg mal einen der beiden "Eingänge" über einen hochohmigen Widerstand an GND und den anderen an high. Ist der Punkt C dann high oder low?
Ich korrigiere hier gar nichts.. Wenn du es nicht raffst, hier um Unterstützung bittest, diese auch von verschiedenen Stellen erhältst, es dann immer noch nicht raffst, weil du vermutlich von Schaltungstechik keine Ahung hast, und dann den Leuten, die dir helfen, überheblich kommst, dann bin ich raus. Ich weiss, wie´s funktioniert..
Beitrag #5787647 wurde von einem Moderator gelöscht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.