Hallo,
ich hab zwar gerade einen PIC24EPxxx am Wickel, der sollte da identisch sein, komme aber nicht dazu etwas zu testen. Ich würd das mal anders probieren und das Receivebuffer-Flag testen
Wenn der Receivebuffer am Anfang leer ist, kann er erst voll sein, wenn alle Bits einmal durchgeschoben worden sind.Code:uint8_t Send( uint8_t data) { int temp; CS = 0; temp = SPI1BUF; // empty receive buffer SPI1BUF = data; // data into buffer while( !SPI1STATbits.SPIRBF ) { // all bits are shifted, receivebuffer is full ; } CS = 1; return SPI1BUF; }
Noch zwei Hinweise deinen Code für andere lesbarer zu machen: wenn hier mit CS=0; //no operation gemeint ist, was der Kommentar sagt, schreib Nop(): hin. Sonst muß man dauernd überlegen, warum hier CS behandelt wird. Und rück bei while(IFS2bits.SPI2IF==0); // wait
wenigstens das Semikolon auf die nächste Zeile. Dann erkennt jemand, der den Code nicht gut kennt (und das bist auch du selbst in 3 Monaten) sofort die Schleife. Ich schreib das normalerweise noch etwas ausführlicher. Dann kann man da auch mal schnell irgendwelchen (Debug)Code einfügen und auch wieder rauskommentieren.
Vielleicht hilfts ja
MfG Klebwax








Zitieren
Lesezeichen