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.