Ich habe mir eine SPI Routine für meinen PIC18F45k22 geschrieben und habe ich kleines Problem: Der Empfänger empfängt die Daten oft nicht richtig, da sich die Daten erst gleichzeitig mit dem Takt ändern (siehe Oszi-Bild). Im Anhang mein C-Code (MikroC). Weiß jemand zufällig wie ich dieses Problem löse?
1 | void SPI_init() |
2 | {
|
3 | SSP1STAT=0b00000000; |
4 | SSP1CON1=0b00100001; |
5 | TRISC.TRISC3=0; // SCK: output |
6 | TRISC.TRISC4=1; // SDI: input |
7 | TRISC.TRISC5=0; // SDO: output |
8 | }
|
9 | |
10 | char SPI_Transfer(char byte) |
11 | {
|
12 | PIR1.SSPIF = 0; // Just in case, clear Interrupt Flag |
13 | |
14 | SSP1BUF = byte; |
15 | while(SSP1STAT.BF == 0); |
16 | |
17 | return SSP1BUF; |
18 | }
|