www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MCP2515 CAN Controller


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@tobi

hab auch schon hier im forum danach gesucht, aber leider nicht's
passendes gefunden. im grunde geht's mir um die abfolge der
initialisation des MCP2515 und dann ums senden und empfangen von msgs.

gruß,
martin

Autor: Steffen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe die Sourcen von Microchip für den MCP2510 an den MCP2515
angepaßt. Das MCP2515.h ist komplett neu. Ein kleines Beispiel ist auch
dabei. Ist für den ATmega128 geschrieben.


Gruss

Steffen

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und warum nicht gleich den AT90CAN128?

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: cazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na z.B. bei Blitzeinschlag dachte ich, um die weiteren ICs zu schützen.
Ich mein es ist ja nicht umsonst im Datenblatt des SJA1000. WObei beim
mcp2551 fehlt dieses Problem....

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.