CAN Kommuikation ATmega328P

#6379061
Lesenswert?

Hallo liebe Community,

ich würde gerne mit einem ATmega328P eine CAN Kommunikation ermöglichen. 
Damit das klappt habe ich auf meinem Breadbord meinen µC um einen 
MCP2515 erweitert und die CAN-Lib vom Kreativen-Chaos eingebunden und 
vorher konfiguriert.
Die Breadboardmontage habe ich als KiCad Zeichnung angehangen sowie die 
Main.c, Config.h und Can.h.
Im Makefile habe ich die CPU Frequenz auf 8MHz gesetzt und in der Config 
MCP2515_CS auf B,1 und MCP2515_INT auf B,0 gesetzt.

Leider kann ich bis auf einen 5V Pegel auf meinem INT Ausgang an Pin B0 
des ATmegas nichts weiteres mit meinem Oszilloskop messen. Auch ein CLK 
Signal wird nicht ausgegeben.

Ich Hoffe ihr könnt mir ein paar Tipps geben wie ich an meine CAN 
Kommunikation komme.

Viele Grüße und danke im Voraus!
Angehängte Dateien:
Gast #6379063
Lesenswert?

An RX und TX müsste eigentlich noch ein Transceiver hängen, wenn du 
einen echten CAN-Bus willst. Wahrscheinlich brauchst du einen Pull up 
oder Pull down an den Pins wenn du keinen Transceiver hast.
Gast #6379070
Lesenswert?

Philipp V. schrieb:
> Die Beschaltung am Ausgang des MCP2515 habe ich erstmal vernachlässigt,
> da bevor dort etwas raus kommt ja erstmal etwas reinkommen müsste oder?
> Soweit ich weiß ist der Transceiver auch nur ein Pegelwandler der meine
> CAN Nachricht auf den richtigen Pegel bring oder?

Nö.
Er liefert auch einen definierten Pegel an den CAN-Controller.

Andererseits kannst du den CAN-Controller in den Loop-Back-Modus setzen, 
wodurch keine weiteren CAN-Komponenten notwendig sind.
Gast #6379176
Lesenswert?

Jubel schrieb:
> Bevor man solche Schaltungen angeht, muss man sich in das Thema
> einarbeiten

... und ich gebe jetzt schon mal vorsorglich die Warnung aus:

Wer Mikrokontroller-Schaltungen ohne Abblock-Kondensatoren aufbaut,
nachmacht oder verfälscht, insbesondere bei existierenden
Schaltungen die Abblock-Kondensatoren weglässt oder falsch
verschaltet oder selbst solche Schaltungen entwirft, in Verkehr
bringt und/oder aufbaut ohne Abblock-Kondensatoren nach Hersteller-
Empfehlungen zu verwenden, wird mit Zugangs-Ausschluss vom
Mikrokontroller-Forum nicht unter zwei Jahren bestraft.
Gast #6379428
Lesenswert?

Viel einfacher wäre es, einen Mikrocontroller zu verwenden, welcher den 
CAN-Controller mitgeliefert hat. Da fällt ein IC und das SPI weg und 
damit eine Reihe an Fehlerquellen. Dann kann man auch Mikrocontroller 
und CAN-Controller aus einem Quarz versorgen. In Form des STM32F103C8T6 
kriegt man das nachgeworfen, in Form des STM32-Olimexino komplett fertig 
aufgebaut mit Transceiver, Schutzschaltung usw (aber etwas teurer). 
Nebenbei ist das Ganze debug-bar und man kann sich Schritt für Schritt 
im Programmcode anschauen wo es hapert.

Der 120Ohm Terminierungswiderstand kommt an die CANH/CANL Leitungen, 
aber doch nicht an RX/TX; wenn die Treiber da drin zu schwach sind wäre 
es kein Wunder dass es so nicht klappt...
#6379515
Lesenswert?

Programmierer schrieb:
> Viel einfacher wäre es, einen Mikrocontroller zu verwenden, welcher den
> CAN-Controller mitgeliefert hat.

An sowas habe ich auch schon mal gedacht, allerdings habe ich schon 
einiges an Code für den mega geschrieben und müsste das ganze ja dann 
irgendwie auf diese STM Plattform konvertieren



> Der 120Ohm Terminierungswiderstand kommt an die CANH/CANL Leitungen,
> aber doch nicht an RX/TX;

Hab ich auch gesehen und sofort geädert.
#6379675
Lesenswert?

Philipp V. schrieb:
> Ich habe hier noch ein paar 16MHz Quarze rumfliegen, der MCP2515 ist
> allerdings mit max. 10MHz angegeben

Wo steht denn sowas?
Ich lasse alle MCP2515 mit 16MHz Quarz laufen. Das ist die übliche 
Frequenz mit dem auch die meisten Softwarebibliotheken arbeiten.

Ob du den Atmega328 mit Quarz oder internen Oszillator betreibst ist für 
deine Anwendung erst mal egal.
#6382101
Lesenswert?

Thomas F. schrieb:
> Wo steht denn sowas?
> Ich lasse alle MCP2515 mit 16MHz Quarz laufen. Das ist die übliche
> Frequenz mit dem auch die meisten Softwarebibliotheken arbeiten.
Direkt auf Seite 1 im Datenblatt steht bei den Features: High-Speed SPI 
(10MHz). Später im Datenblatt findet mann dann unter dem Punkt 
Oszillator, dass bis zu 20MHz möglich sind.
War auf den ersten Blick etwas irreführend für mich dargestellt.

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