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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.