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...
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
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???
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???
DU mußt aus DEINEM Programm heraus diese Funktion aufrufen. Nach Funktionsabarbeitung springt der Controller zurück, auf die Zeile nach dem Funktionsaufruf!!!!!!!!!
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
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..
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.