Forum: Mikrocontroller und Digitale Elektronik per SPI einlesen? bin am verzweifeln


von Danny P. (Gast)


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

von Schoaschi (Gast)


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

von Danny P. (Gast)


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

von Danny P. (Gast)


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

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.