www.mikrocontroller.net

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


Autor: Danny P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Danny P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Danny P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.