Forum: Mikrocontroller und Digitale Elektronik SPI ATMega Slave Daten senden


von Roadrunner (Gast)


Lesenswert?

Hallo community,
brauche eure Hilfe; ärgere mich schon den ganzen Vormittag mit diesem 
Problem.
Ich habe zwei ATM16 per SPI verbunden. Der eine ist als Master, der 
andere als Slave konfiguriert. Hardwaremäßig müsste alles passen, Bytes 
werden auch schon fleißig gesendet.
Die Bytes in Richtung Slave (MOSI) stimmen 100%. Mein Problem liegt in 
der MISO Senderichtung. Der Slave antwortet mittels der SPI_ISR. In 
dieser verändere ich lediglich das SPDR-Register (z.B. SPDR+=8;), sonst 
nichts. Eigentlich müsste beim Senden (MOSI) des nächsten Bytes, das 
vorhergende Byte+8 in MISO Richtung zurückgeschickt werden. Tut es aber 
nicht, habe lediglich eine Echofunktion, d.h. das vorher gesendete Byte 
(MOSI) wird 1:1 im aktuellen Transfer auf MISO zurückgeschickt.
Nochmal in Kurzform:

        1.Byte     2.Byte     3.Byte     4.Byte
MOSI:    0x55       0x02       0x01        0x55
MISO:     ?         0x55       0x02        0x01
eigentlich würde an der MISO Leitung folgendes erwarten SPDR+=8:
MISO:     ?         0x5D       0x0A        0x09

Slave_SPI_ISR
{
   SPDR+=8;
   data=SPDR;
   /*The Slave may continue to place new data to be sent into SPDR 
before reading the incoming data. */
}

Was mache ich hier falsch?

Gruß Roadrunner

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.