per SPI einlesen? bin am verzweifeln

Gast #210907
Lesenswert?

Hi Zusammen !

Ich versuche mitlerweile verzweifelt RX-Register eines MCP2515
(Can-Controller) mit einem Mega8 zu lesen...

Zum Lesen sende ich den Lesebefehl  und anschliessend ein Dummybyte zur
Taktgenerierung....

Slaveselect
ldi Akku, "Lesebefehl"
rcall SPI
ldi Akku, "Dummybyte"
rcall SPI
_Slaveselect_(aus)

Dafür wird diese Routine angesprungen:

SPI:    out spdr, Akku
wart:   sbis spsr, spif
        rjmp warten

        in Akku, spdr
        ret

Nach dem Dummybyte hätte ich eigentlich den Inhalt der Speicherstelle
(RX-Register) im "Akku" erwartet.... (also per SPI eingetaktet) aber
sind nur Nullen drin... :-(    oder versuche ich zu schnell das spdr in
den Akku übertragen?

Ich habe nirgends nen Assembler-Code gefunden.... und langsam ne
gedankliche Blockade...

nen tip?

thx & greetz
Danny
Gast #210908
Lesenswert?

Sorry.. kann kein Assambler, aber schau doch mal ins datenblatt ;D da
sind Beispielcodes dabei.

------------------------------
SPI_MasterTransmit:
; Start transmission of data (r16)
out SPDR,r16
Wait_Transmit:
; Wait for transmission complete
sbis SPSR,SPIF
rjmp Wait_Transmit
ret

SPI_SlaveReceive:
; Wait for reception complete
sbis SPSR,SPIF
rjmp SPI_SlaveReceive
; Read received data and return
in r16,SPDR
ret
------------------------------
Vl hilft dir das was... das steht auf Seite 124 und 125. mfg Schoasch
Gast #210909
Lesenswert?

@Schoaschi: das Datenblatt habe ich natürlich als erstes zu Rate
gezogen. Aber wie da ja steht is es eine SLAVE-Routine... Meine Mega8
ist aber ein MASTER und dazu gibbet von Atmel kein asm-Beispielcode.

trotzdem thx

greetz
Danny
Gast #210910
Lesenswert?

so... nach weiteren Stunden neuer Stand:

SPI scheint zu funktionieren, aber mein MCP2515 antwortet nur mit 0x00.

Egal welche Adresse ich auslese, er schiebt nur Nullen raus. Im
Ruhezustand ist SO (Slaveout) brav hochohmig und anschliessend schiebt
er 8 Nullen raus....

Habt Ihr ne Idee was den MCP2515 zu sowas veranlassen könnte?
Habe nun schon alle möglichen Fehlerquellen ausgeschlossen; das Senden
per SPI und somit das steuern des MCP klappt... aber wie gesagt... das
lesen.. grummel

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