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
@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
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
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
@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
@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
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?
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?
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....
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
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.