Hallo,

ich habe hier ein eigenartiges Problem (zumindest verstehe ich es nicht)
mit einem Mega8 und einem MCP2515.

Ich habe mehrere Module mit diesen beiden Bausteinen um sie mittels CAN
zu verbinden. Dabei hat eins dieser Module einen Quarz mit 11,xx MHz
damit der UART vernünftig läuft. Die anderen Module laufen mit dem RC
Oszillator zwischen 1 und 8 MHz. Alle MCP2515 haben einen eigenen 16 MHz
Quarz und die Bitrate sollte auf 125kbit/s eingestellt sein. Ich
programmiere in C mit dem avr-gcc und verwende für alle Module die
gleiche can.h und can.c in der die SPI Funktionen und andere CAN
Funktionen stecken (also überall identisch)

Das Problem ist nun, dass ich hier 2 Module auf dem Tisch habe mit
unterschiedlichem Takt (einmal die 11MHz einmal 4) der Teiler für den
SPI Takt ist auf beiden gleich eingestellt (also SPI am 11MHz
schneller). Die beiden Platinen reden aber nicht miteinander. 2 Platinen
bei denen jeder Mega8 auf der gleichen Frequenz läuft reden miteinander.
Wie kann das kommen? Die Bitrate am CAN ist ja durch die Einstellung und
den Quarz am MCP2515 festgelegt und die sind überall gleich.
Nun dachte ich kommt es vielleicht zu Störungen durch die zu hohe SPI
Taktrate, deshalb habe ich den SPI Teiler auf den Platinen mit 11MHz mal
verdoppelt und dann läuft es nun reden alle miteinander. Aber wenn es
wirklich Störungen waren, warum konnten dann 2 gleichgetaktete AVR
miteinander reden?
Außerdem stört es mich, dass zZ der SPI Bus nur mit ca. 180kHz läuft.

Hat jmd eine Idee was da passiert?

Vielen Dank
Gruß Philipp

PS: Ich habe mir mal angesehen wie das CAN Signal aussieht und es ist
beim 11MHz Modul eindeutig schneller (höhere Bitrate)

PPS: Ich habe die gleiche Frage schon im mikrocontroller Forum gepostet, allerdings hatte ich nicht das Gefühl das dort genau auf das Problem eingegangen wurde. Und da hier ja auch einige den MCP2515 nutzen hoffe ich auf mehr Glück. Die Software entspricht ziemlich exakt der von Kijon