Forum: Mikrocontroller und Digitale Elektronik MCP2515 an ATmega8 - falsche Daten aus Loopback :-(


von David M. (md2k7)


Lesenswert?

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

von David M. (md2k7)


Lesenswert?

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
Noch kein Account? Hier anmelden.