mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI Code aus dem Datasheet


Autor: Yücel Atalay (yuetzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hoffe sehr, jemand kann mir helfen. Ich möchte die SPI-Kommunikation 
einen µCs und eines CO-Prozessors abfangen. Dazu verwende ich meinen 
STK500 mit Atmega8515.

Auf S. 130 im Datasheet des 8515 steht

The following code examples show how to initialize the SPI as a Slave 
and how to perform a simple reception.

******************************
SPI_SlaveInit:
; Set MISO output, all others input
ldi r17,(1<<DD_MISO)
out DDR_SPI,r17
; Enable SPI
ldi r17,(1<<SPE)
out SPCR,r17
ret

SPI_SlaveReceive:
; Wait for reception complete
sbis SPSR,SPIF
rjmp SPI_SlaveReceive
; Read received data and return
in r16,SPDR
ret
*******************************

Frage:
1. Kann ich mit dem obigen Code nun wie gehofft, die Daten abfangen?
2. Wann kommt das Programm eigentlich von "SPI_SlaveInit" weg zu 
"SPI_SlaveReceive"? Der erste ret Befehl sorgt doch für eine Schleife 
mit einem Jump zu "SPI_SlaveInit", oder?

Ich danke im Voraus schon für eure Mühe...

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das ist das Programmierbeispiel für einen SPI-Slave, ja.

Die erste Subroutine initialisiert die SPI HArdware, die zweite empfängt 
ein Byte vom SPI.

Wann die wo in Deinem Programm aufgerufen werden, muß Du ja entscheiden.

Initialisieren muß man die Hardware ja normalerweise nur einmal beim 
PowerOn-Reset,
wann was empfnagen werden osll und was mit den Daten passieren soll, 
mußt Du ja programmieren.
Die zweite Subroutine wartet, bis ein Byte im SPI angekommen ist und 
kehrt dann mit diesem Byte in r16 zurück. Mehr nicht.

Gruß aus Berlin
Michael

Autor: Yücel Atalay (yuetzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI!

Das heißt doch, so wie es drin steht, ist nichts mit dem Programm 
anzufangen, weil das erste ret doch für eine Endlosschleife sorgt, 
oder???

Autor: Yücel Atalay (yuetzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI!

Das heißt doch, so wie es drin steht, ist nichts mit dem Programm
anzufangen, weil das erste ret doch für eine Endlosschleife sorgt,
oder???

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DU mußt aus DEINEM Programm heraus diese Funktion aufrufen. Nach 
Funktionsabarbeitung springt der Controller zurück, auf die Zeile nach 
dem Funktionsaufruf!!!!!!!!!

Autor: Mi Mo (mike123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

poste doch mal dein komplettes Programm!

Falls du keins hast: Aktivier den SPI-Empfangsinterrupt

PSEUDOCODE:
-----------

isr SPI_SLAVE:
 Byte empfangen
 Flag setzen
 reti


main:

 Aufruf init_spi

nix:
 if Flag gesetzt
   mach was

 goto nix

Autor: Yücel Atalay (yuetzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, ich habs.
--------------------------------------------------------------------
Ich habe einen Traum:

Forenbeiträge in Audio aufgeben, damit die Betonungen auch so 
rüberkommen, wie man es will. :-)

Danke an euch..

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.