Hallo, ich habe einen MCP2515 CAN-Baustein am SPI eines ATmega8 hängen. Der MCP2515 ist in Loopback mode (CANCTRL = 0x47 (REQOP1 -> Loopback, und Taktausgang auf 1/8), auch ausgelesen, stimmt). Ich schreibe jetzt eine Nachricht in TXB0 mit der extended CAN-ID 0x12345678. Ausgelesene CAN-ID-Register des Sendepuffers: TXB0SIDH bis TXB0EID0 = 91A05678, müsste meiner Meinung nach stimmen, müsst ihr nicht nachrechnen. Nach dem Empfangen in RXB1 sehen die CAN-ID-Register des Empfangspuffers: RXB1SIDH bis RXB1EID0 so aus: 91A0F408 -> Es wurde also alles korrekt "empfangen" (Loopback!), außer die extended ID. Mehrmaliges Auslesen der Register bringt immer dieselben Ergebnisse. Für das Auslesen habe ich sogar zwei verschiedene Routinen von mir benutzt, einmal eine, die mit dem "Read RX Buffer"-Befehl arbeitet (ist quasi ein Read mit abgesparter Adresse - wird automatisch vom Empfangspuffer gelesen); eine andere, die mit dem Read-Befehl ein einzelnes Register ausliest, mit massig Delays zwischen den einzelnen gelesenen Bytes... Mehrmaliges Senden bringt eine abwechselnde Folge von 91A0F408 und 91A07CBF in den Empfangsregistern für die CAN-ID - diese Folge ist auch nach erneutem Bestromen gleich. Ist mein MCP2515 "kaputt"? Kann ein IC so kaputtgehen? Liefert ja immer (2) unterschiedliche falsche Werte aus dem RAM... Gruß David
Falls jemand das hier findet und sich ebenfalls wundert: Ich habe im TXB0SIDL Register das EXIDE Bit vergessen, das für die extended CAN-ID steht, ansonsten wird nur die standard-ID mit 11 Bit übertragen. TXB0SIDL lautet für mich also 0xA8, in meiner Notation der 4 Register für die CAN-ID: 91A85678...
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.