Gast
#3350908
Salu zusammen Ich habe hier ein kleines Problem. Es geht um zwei PIC18F46K22 welche über SPI miteinander Kommunizieren sollen. Vom Master auf den Slave läuft die ganze Sache auch bereits 1A. Was ich vom Master rausschicke kommt beim Slave richtig an. Problem: Wenn ich etwas in das SSP1BUF Register reinschreibe (Slave) und vom Master aus ein Dummy Byte schicke um die Daten vom Slave zu lesen, bekomme ich zwar Daten, aber diese sind um 1Bit verschoben Slave sendet: „yvi“: 0111 1001 0111 0110 0110 1001 PIC1 Empfangt: „0xBC 0xBB 0x34“: 1011 1100 1011 1011 0011 0100 Überenander: 0111 1001 0111 0110 0110 1001 1011 1100 1011 1011 0011 0100 Zweite Zeile um 1 nach links geshiftet --> Stimmt 0111 1001 0111 0110 0110 1001 0111 1001 0111 0110 0110 100x Habe denke ich schon so ziemlich alle Mods probiert, also mit CKP/CKE und ohne, SMP mit und ohne. Klappt irgendwie nichts von allem. Hier mal noch die Init der beiden PIC. MASTER: void SPI_Init(void) { SSP1CON1 = 0x10; SSP1STAT = 0x00; IPR1 |= 0x08; PIE1 |= 0x08; } SLAVE: void SPI_Init(void) { SSP1CON1 = 0x15; SSP1STAT = 0x00; IPR1 |= 0x08; PIE1 |= 0x08; } Kennt vielleicht zufällig jemand ein solches Phänomen? Leitungen sind kurz und der Takt auch nicht all zu hoch. Wie gesagt, nehme an das macht alles keine Probleme, da der Master ja auf den Slave senden kann und die Leitungen gleich lang sind. Gruss RS4