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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.