Hallo Christian,
das kann an allem möglichen liegen.
Hast du das SPI-Interface richtig konfiguriert? Wenn du Software-SPI verwendest, müssen die Pins für das SPI richtig konfiguriert werden. Bei Hardware-SPI muss das SPI-Modul richtig konfiguriert werden (richtigen SPI Mode 0 bis 3 wählen).
Kannst du bestimmte Register des CAN-Controllers, von denen du den Reset-Zustand kennst, auslesen und an einem Port ausgeben und messen?
Noch ein kleiner Hinweis zu dem Sourcecode-Ausschnitt ...
du möchtest sicherlich die oberen 4 Bits auf "0" setzen. Das geht auch so:
Ich würde den Fehler zuerst bei SPI und dem Anschluss des CAN-Controllers an den AVR suchen. Testweise einen bekannten Registerinhalt auslesen und diesen prüfen.
Gruß,
Dirk
das kann an allem möglichen liegen.
Hast du das SPI-Interface richtig konfiguriert? Wenn du Software-SPI verwendest, müssen die Pins für das SPI richtig konfiguriert werden. Bei Hardware-SPI muss das SPI-Modul richtig konfiguriert werden (richtigen SPI Mode 0 bis 3 wählen).
Kannst du bestimmte Register des CAN-Controllers, von denen du den Reset-Zustand kennst, auslesen und an einem Port ausgeben und messen?
Noch ein kleiner Hinweis zu dem Sourcecode-Ausschnitt ...
Code:
rx_datalength = rx_datalength << 4;
rx_datalength = rx_datalength >> 4;
Code:
rx_datalength = rx_datalength & 0b00001111;
Gruß,
Dirk