Hallo, ich habe ein Problem mit der Kommunikation über einen CAN-Bus zwischen 2 Platienen und hoffe irgendjemand kann mir helfen. Also, ich habe zwei baugleiche Platienen miteinander verbunden (wie gesagt, mit einem CAN-Bus). Auf beiden Platinen befinden sich ein ATMega8-16PU, ein MCP2515 und ein MCP2551. Auf beiden Megas läuft der gleiche Code. Jetzt zum Problem: Wenn ich von Platine1 Daten zu Platine2 schicke, kommen diese perfekt an. Anders herum (P2 -> P1) funktioniert nicht. Das kuriose dabei ist, dass ich die jeweiligen Bauteile miteinander vertauschen kann, es passiert immer das Gleiche. Ich habe mir jetzt so überlegt: - wenn ich mit einem Senden kann und der Andere das empfängt, liegt es nicht an den SPI's oder deren Einstellungen - am Code kann es auch nicht liegen, da auf beiden µC der selbe aufgeflasht ist und das Vertauschen der Controller nichts bewirkt - an den USART's liegt es auch nicht, da ich diese getestet habe - der Bus muss auch ok sein, da es ja in eine Richtung funktioniert...d.h. auch, dass die vier MCP... richtig laufen... - Rx-Can und Tx-Can habe ich mit einem Ohm-Meter, auf richtigen Anschluss getestet Da mir jetzt so langsam die Fehlerquellen ausgehen, hoffe ich, dass mir einer von euch weiterhelfen kann. Danke schon mal im Voraus!
Dies bittenochmal erklären: >Das kuriose dabei ist, dass ich die jeweiligen Bauteile miteinander >vertauschen kann, es passiert immer das Gleiche. welche Bauteile GENAU vertauscht? Die AVRs? oder die Treieber, CAN Controller auch? WAS "das Gleiche"? Wenn es wirklich der gleiche code sein soll, wie du bechauptet hattest, dann schicken die wohl die Messages mit der gleichen ID, was zu kollisonen führt, und deswegen nicht erlaubt ist. Aber ich habe das Gefühl, dass du uns etwas verschweigst...
>dann schicken die wohl die Messages mit der gleichen >ID, was zu kollisonen führt, und deswegen nicht erlaubt ist. Hä? Jeder Busteilnehmer darf auf jeder ID senden.
Wenn du die Bauteile tauschen kannst, bleibt der Fehler auf der Platine 2, d.h. die Platine ist dran schuld.....
Hallo pcb und danke für die Antwort, Ich kann die AVR's miteinander, die MCP2551 miteinander und/oder die MCP2515 miteinander vertauschen und jedes Mal kann ich nur von P1 nach P2 senden. Und ja das ist die gleiche ID, aber erstens ist das egal, weil ich sowieso immer vorher komplet resette und 2. die Filter und Masken der MCP's aus sind (also jede Nachricht wird aufgenommen).
Helmut schrieb: > Wenn du die Bauteile tauschen kannst, bleibt der Fehler auf der Platine > 2, d.h. die Platine ist dran schuld..... ^^das ist nicht unbeding die Schuld von Platine 2, weil entweder kann nicht senden, oder Platine 1 nicht empfangen.
pcb schrieb: > ..dann schicken die wohl die Messages mit der gleichen > ID, was zu kollisonen führt, und deswegen nicht erlaubt ist. Aber ich > habe das Gefühl, dass du uns etwas verschweigst... ..Ach ja, und ich schicke die Nachrichten ja nicht gleichzeig. Tasterdruck->senden->per UART der anderen auslesen...dann nehm ich die Spannung weg und versuch es anders herum...geht nicht... :(
Danke für eure Antworten, hab den Fehler gefunden....eine Lötstelle vom Bus hatte kontakt zur Masse... dummer Fehler.. :D ...jetzt geht´s.. :)
Nein, ich hatte Unrecht :-) A. V. schrieb: > Helmut schrieb: >> Wenn du die Bauteile tauschen kannst, bleibt der Fehler auf der Platine >> 2, d.h. die Platine ist dran schuld..... > > ^^das ist nicht unbeding die Schuld von Platine 2, weil entweder kann > nicht senden, oder Platine 1 nicht empfangen.
holger schrieb: > Hä? Jeder Busteilnehmer darf auf jeder ID senden. Na genau eben nicht, höhstens eine Request der Nachricht mit einer bestimmten ID stellen. Wenn das passiert, dann hast du eine Kollision, die nicht aufglöst, vermieden werden kann => Datenverlust. A. V. schrieb: > Und ja das ist die gleiche ID, aber erstens ist das egal, weil ich > sowieso immer vorher komplet resette und 2. die Filter und Masken der > MCP's aus sind (also jede Nachricht wird aufgenommen). So what? A. V. schrieb: > ..Ach ja, und ich schicke die Nachrichten ja nicht gleichzeig. > > Tasterdruck->senden->per UART der anderen auslesen...dann nehm ich die > Spannung weg und versuch es anders herum...geht nicht... :( Aha, mein Gefühl hat mich nicht getäuscht. Diese kleines ach ja, kann grosse Auswirkung haben. Nun bin ich froh, dass anscheinend Fehler gefunden wurde.
pcb schrieb: > A. V. schrieb: >> Und ja das ist die gleiche ID, aber erstens ist das egal, weil ich >> sowieso immer vorher komplet resette und 2. die Filter und Masken der >> MCP's aus sind (also jede Nachricht wird aufgenommen). > > So what? > Ja, war ja nur der Code um erstmal zu schauen, ob ich ne Massage über Can verschickt und empfangen bekomme. Wenn´s mal fertig ist sollen dann mehrere Slaves, die jeweils nur eine id empfangen (mittels der Filter), mit einem Master kommunizieren. Da werden dann selbstverständlich unterschiedliche id´s verwendet. > A. V. schrieb: >> ..Ach ja, und ich schicke die Nachrichten ja nicht gleichzeig. >> >> Tasterdruck->senden->per UART der anderen auslesen...dann nehm ich die >> Spannung weg und versuch es anders herum...geht nicht... :( > > Aha, mein Gefühl hat mich nicht getäuscht. Diese kleines ach ja, kann > grosse Auswirkung haben. > Nun bin ich froh, dass anscheinend Fehler gefunden wurde. Ja zum Glück...Danke, für die vielen Nachrichten!
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.