Hi,
ich versuche gerade, den SPI2 beim dsPIC33EV64GM002 zu verwenden, dabei
soll nur gesendet werden, die Empfangsrichtung interessiert nicht.
Leider klappt das ganze schon im Simulator nicht, die Statusabfrage in
SPI1STAT (Bit SPIRBF) liefert mir immer ein "nicht fertig" zurück.
Im Moment habe ich das Folgende:
Mapping der Pins:
1 | RPOR0bits.RP20R=8; // use RP20 / pin 12 for SDO2
|
2 | TRISAbits.TRISA4=0; // set as output -> this can be removed (possibly)
|
3 |
|
4 | RPOR0bits.RP35R=9; // use RP35 / pin 7 for SCLK2
|
5 | TRISBbits.TRISB3=0; // set as output -> this can be removed (possibly)
|
Initialisierung von SPI2:
1 | IFS2bits.SPI2IF = 0;
|
2 | IEC2bits.SPI2IE = 0;
|
3 | IPC8bits.SPI2IP = 0;
|
4 | SPI2CON1 = 0x0337; //0b0000 0011 0011 1110
|
5 | SPI2CON2 = 0x0000; //0b0000 0000 0000 0000
|
6 | SPI2STAT = 0x8000; // 0b1000 0000 0000 0000
|
Die Teiler für den Clock passen sicher vorne und hinten noch nicht, für
den Simulator sollte das aber erst mal egal sein?
Ein einzelnes Byte senden:
Warten, dass der Sendevorgang abgeschlossen wird:
1 | while (!SPI1STATbits.SPIRBF);
|
An genau der Stelle hängt mein Code, die while-Schleife kommt nie
zurück.
Irgend eine Idee, was hier schief laufen könnte?
Danke!