MCP2515 CAN Controller

Gast #120070
Lesenswert?

Hallo!

Ich bin dabei mir ein CAN mit MCP2515 CAN-Controllern, die über SPI an
eine ATmega16 angebunden sind, aufzubauen. Jedoch ist die
initialisierung des CAN controller aufgrund der vielen
configurationsregister ziemlich schwer zu überblicken (für mich). Das
gleiche gilt auch für das senden und empfangen von Messages. Nun wollte
ich fragen ob jemand schon erfahrungen mit diesem CAN controller gemacht
hat und eventuell ein C-Code (ich verwende WinAVR) beispiel posten
könnte?

danke und gruß,
martin
Gast #120074
Lesenswert?

Hi,

auf welchem Controller arbeitest Du?

Ich habe den MCP2515 am mega16 laufen ... bzw. fast am laufen ... im
übrigen habe ich etwas in Steffens Sourcen spickeln dürfen, was recht
nützlich war (danke nochmal, Steffen!).

Was sinnvoll ist: beschränke die Einstellungen auf Dinge, die Du
wirklich brauchst, z.B. NUR standard- oder NUR extended frames. Die
allermeisten Register brauchst Du gar nicht. Wenn z.B. die
Acceptance-Masken Null sind, dann empfängt er einfach alles, egal wie
die ganzen Filter stehen - ganz sinnvoll mindestens für den Anfang.

Wichtig ist auch, gerade am Anfang: wenn Du nur ein Gerät am Bus hast
(nämlich das, auf dem Du programmierst), versucht der MCP2515 die Daten
ständig zu wiederholen, da er kein ACK eines anderen Busteilnehmers
bekommt. Abhilfe: in CANCTRL auf Oneshot-Modus schalten (und später
nicht vergessen, den wieder zurückzunehmen).

@Steffen:
Hat die 1ms Verzögerung nach jedem Senden in Deinem Code einen
besonderen Grund?
> #ifdef PR_RTX
>    PR_Wait_Ticks( 10 );            // short delay
> #else
>    wait_ms( 1 );
> #endif


Viele Grüße, Stefan
Gast #120076
Lesenswert?

@crazy horse:
rein aus meiner Sicht:

* weil ich 2 CAN-Busse brauche
* weil ich den mega16 gerade auch in einem anderen Projekt verwende
  und nicht gerne mit 2 Architekturen gleichzeitig arbeiten will
* weil ich mit dem mega16 komfortabel per JTAG-Debug arbeiten kann
* und noch einen ganz wichtigen, rein persönlichen Grund sage ich
  lieber nicht ... ;-)

Viele Grüße, Stefan
Gast #120077
Lesenswert?

@Stefan:

die Wartezeiten ( 1ms ) waren am Anfang nur zum Test. Beim Schreiben
und Lesen sind dann etwa 100µs OK. Das war aber meine Erfahrung mit dem
Betriebssystem, das ich damals benutzt habe.

Gruss

Steffen
Gast #120078
Lesenswert?

Oi

ich suchte vergeblich danach, wie man das Gespann mcp2515--mcp2551
gegen Spitzen schützen kann. Wäre sicherlich mit Optokopplern zu
machen. Ich habe bist jetzt den pca85c250 studiert. In dessen
Datenblatt ist es schön abgebildet, mit 2 Optokopplern zwischen
Controller und Transceiver. Kann ich dieselbe Beschaltung für den mcp
nehmen?
Gast #120079
Lesenswert?

welche Spitzen meinst du denn? Echte, eingebildete oder
über-über-vorsichtig: es könnten ja irgendwann mal welche kommen?
Der CAN-Bus läuft in den dreckigsten Umgebungen aufgrund des
Übertragungsprinzips und der eingebauten Mechanismen. Wo ist dein
Problem wirklich?
Gast #120081
Lesenswert?

Ich glaube nicht, dass ein Optokoppler bei einem Blitzschlag wirklich
nützlich wäre, aber ich lasse mich gerne eines Besseren belehren.

Aber bevor du diesen Baustein verwendest schau dir zur Sicherheit die
Errata-Blätter an. Ich kann mich erinnern etwas gelesen zu haben, dass
man nur einen Transmit-Buffer verwenden darf, da es sonst zu
fehlerhaften Daten kommen kann. Also Vorsicht! Aber der 2515 ist auf
jeden Fall schon viel besser als der 2510. Der 2510 strotzte nur so von
Fehlern.

Tschüss, Martin

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren