Forum: Mikrocontroller und Digitale Elektronik Problem mit CAN - MCP2515


von Philipp (Gast)


Lesenswert?

Hallo,

ich hab ein Problem mit meinem CAN-Controller MCP2515. Der hängt an
einem AVR AT90S2313 und hat als Bustreiber noch einen 82C250 an seiner
Seite. Das Ansprechen des MCPs vom AVR aus funktioniert wohl, die
Freuqenz am Taktausgang des MCPs kann ich zumindest verändern. Wenn ich
versuche ein Telegramm via CAN zu senden, passiert folgendes:

Der MCP legt ein Bit an den Bustreiber, lässt es für 8us anliegen und
bricht dann ab. Noch kurzer Zeit versucht er das ganze nochmal.
Datenrate ist auf 125kHz eingestellt. Wenn ich nun am MCP die Pins
CANRX und CANTX verbinde, dann sendet er das Datentelegramm wie
gewünscht komplett. Woran könnte das liegen ?

Was muss denn alles mindestens vorhanden sein damit ich ein
Datentelegramm schicken kann ? Müssen noch andere Geräte mit der
richtigen Bitrate an dem Bus hängen ?

Danke an alle Helfer....

Gruß
Philipp

von Profi (Gast)


Lesenswert?

Der CANbus muss mit 2x 120 Ohm abgeschlossen sein, sonst hört Rx nicht,
was Tx sendet.
Der Controller meint, er habe die Arbitrierung verloren, und hört
deshalb auf zu senden.

Du brauchst einen weiteren CAN-Teilnehmer, der ein gesendetes Telegramm
aknowledged, sonst wird es immer wieder gesendet.

von Philipp (Gast)


Lesenswert?

Okay, danke erstmal für deine Antwort, werde das mal testen wenn ich den
Bus korrekt abgeschlossen habe. Nen zweiten Teilnehmer brauch ich ja nur
damit die gesendete Nachricht bestätigt werden kann, oder ? Wenn der
nicht vorhanden ist wird die Nachricht ja aber auf jeden Fall nach nem
Reset mal gesendet, oder ? Die müsste ich ja dann auf dem Bus sehen
können...

von Alex G (Gast)


Lesenswert?

Nur einen Bustreiber.
Einen weiteren Teilnehmern ist nicht erfordelich. Der Bus sollte aber
abgeschlossen werden.

von Philipp (Gast)


Lesenswert?

Hallo Zusammen,

hab jetzt nochmal ein bissle getestet:

Konfiguration:

Direkt hinter dem Bustreiber 120 Ohm über CANH und CANL, dann ein paar
Meter Kabel, nochmals mit 120 Ohm abgeschlossen. Bustreiber aus der
Fassung gezogen und 60 Ohm gemessen. Sollte also passen. Also
Bustreiber wieder rein und eingeschaltet.

Der MCP versucht ein CAN Frame zu senden und bricht sofort ab. (Ich seh
nur das ein Flag im Error-Register gesetzt ist). Auf dem Bus sieht man
gar nichts, direkt am MCP sieht man auf der Leitung zum Bustreiber
einen ~136us langen Impuls. Anschließend sieht mann dann nur noch die
8us dauernden Impulse, die dann allerdings regelmäßig.

Wenn ich nun wieder am MCP RX und TX brücke, sendet er auf der Leitung
zum Bustreiber den kompletten Frame, auf dem CAN-Bus sieht man hingegen
nichts. Der Bus hat einen Pegel von ~10mV. Und da ändert sich auch
nichts. Ich habe auch schon einen 2. 82C250 versucht, allerdings mit
dem gleichen Ergebnis. Schade eigentlich :-(

Kann sich da jemand einen Reim darauf machen bzw. mir sagen was ich
falsch mache ?

Danke....

Gruß
Philipp

von Philipp (Gast)


Lesenswert?

So, Problem gelöst. Ich hab jetzt noch einen weiteren Bustreiber
versucht und mit dem hats dann auch so geklappt wie ich mir das
Vorstelle. Au mann, soviel Zeit für nichts. Aber trotzdem danke an
alle....

von Manfred Feitzinger (Gast)


Lesenswert?

Hallo
Ich bin gerade dabei einen Can-Knoten zu bauen.
Ich währe sehr dankbar für nähere Info

Danke Manfred

von Rahul (Gast)


Lesenswert?

Waaas möchtest du denn wissen?

von Manfred Feitzinger (Gast)


Lesenswert?

Ich programiere in Bascom.
Ich habe herausgefunden dass es besser ist den MCP2510 zu verwenden
(wollte eigentlich den SJA1000 verwenden, da ich Ihn kenne)
Nun habe ich absolut nichts im Web gefunden wie ich einen MSP2510 in
BASCOM anspreche.
Nun meine Frage: Wie spreche ich den MCP2515 an ??
Geht es in BASCOM oder muss ich eine neue Programiersprache lernen ??

Danke Manfred

von Rahul (Gast)


Lesenswert?

>Geht es in BASCOM oder muss ich eine neue Programiersprache lernen ??

Sollte auch gehen. IMHO stösst man bei BASCOM aber auch relativ schnell
an die Grenzen.

Den MCP2515 spricht man über die SPI an. Das sollte BASCOM unterstützen
(sogar als SOFT-SPI-Baustein...).
Vielleicht solltest du dich erst mal mit BASCOM (oder einer anderen
Programmiersprache) ansich befassen, indem du LEDs blinken lässt,
Taster einliest etc.
So lernt man die Sprache kennen. Den CAN-Knoten kannst du dann im
weiteren Verlauf bauen...

von Manfred Feitzinger (Gast)


Lesenswert?

Danke für Deine Tips.
Ich bin eigentlich schon sehr weit (trtz meiner schlechten Englisch
kenntnisse)
Led´s Blinken i2c-Bus, LCD auch über i2c, ... kein Problem
Aber SPI ist eben total neuland für mich.

Danke Manfred

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
Noch kein Account? Hier anmelden.