Forum: Mikrocontroller und Digitale Elektronik PIC: SPI Master-Slave Übertragung von Slave um 1Bit verschoben


von RS4 (Gast)


Lesenswert?

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

von DirkF (Gast)


Lesenswert?

Hallo, hatte ähnliche Probleme.
Ursache waren wahrscheinlich Reflektionen auf der Clock Leitung.
Am SPI Master hingen mehrere Slaves.

Habe dann den SPI Clock über ein 74H4050 auf alle Slaves verteilt, dann 
hats geklappt.
LG Dirk

von RS4 (Gast)


Lesenswert?

Salu zusammen

Es waren tatsächlich Reflexionen auf der Clock Leitung. Wurde behoben 
und funktioniert nun

Vielen Dank an DirkF welcher den entscheidenden Tipp gab

Es Grüessli

RS4

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.