Hallo da draußen,
ich habe hier ein Problem, dass ich mir nicht ganz erklären kann. Mit
folgendem Code sende ich ein Byte über SPI und warte auf das Flag. am
Oszi sehe ich, dass das auch wunderbar funktioniert. Wenn ich genau den
gleichen Code 4 mal hintereinander schreibe, sendet der Controller
(dsPIC33) aber nur 3 Bytes. Nach dem dritten Byte scheint das Flag
einfach nicht gesetzt zu werden. Hat jemand eine Idee, woran das liegen
kann?
1 | IFS0bits.SPI1IF = 0;
|
2 | SPI1BUF = temp;
|
3 | while (!IFS0bits.SPI1IF)
|
4 | {
|
5 | continue;
|
6 | }
|
Außerdem müsste sich doch die Taktfrequenz ändern, wenn ich den
prescaler verstelle? Entsprechende Änderungen im SPI1CON1 scheinen
keinen Einfluss zu haben.
1 | SPI1STAT = 0x8000;
|
2 | SPI1CON1 = 0x003A;
|
3 | SPI1CON2 = 0x0001;
|